【C语法学习】13 - fscanf()函数

news2024/11/27 4:38:39

文章目录

  • 1 函数原型
  • 2 参数
  • 3 返回值
  • 4 比较
  • 5 示例
    • 5.1 示例1
    • 5.2 示例2

1 函数原型

fscanf():从指定流stream读取格式化输入,函数原型如下:

int fscanf(FILE *stream, const char *format, ...)

2 参数

fscanf()函数参数包括三部分:

  1. 参数stream是一个指向FILE类型结构的指针;stream指定了fscanf()函数要读取的流,可以是文件流,也可以是标准输入流;当是文件流时,stream等于fopen()函数的返回值;当是标准输入流时,stream等于stdin;
  2. format :格式字符串,与scanf()函数一致;
  3. … : 参数列表,与scanf()函数一致。

3 返回值

fscanf()函数返回值类型为int型:

  1. 读文件成功,则返回成功读取的项数;
  2. 读文件失败,则返回EOF。

C语言标准描述如下:

1. Each of these functions returns the number of fields successfully converted and assigned; the return value does not include fields that were read but not assigned. A return value of 0 indicates that no fields were assigned. 
2. If an error occurs, or if the end of the file stream is reached before the first conversion, the return value is EOF for fscanf or WEOF for fwscanf.

4 比较

fscanf()函数和scanf()函数的工作原理类似,差异如下:

  1. fscanf()函数从指定流stream中获取输入;
  2. scanf()函数从标准输入流stdin中获取输入;
  3. 将fscanf()函数的参数stream指定为stdin,则fscanf()函数的功能和scanf()函数的功能完全相同。

5 示例

5.1 示例1

使用fscanf()函数读文件并打印,示例代码如下所示:

int main()
{
   float f1 = 0.0;
   float f2 = 0.0;
   float f3 = 0.0;
   float f4 = 0.0;
   float f5 = 0.0;
   FILE* fp;

   if ((fp = fopen("1.txt", "r")) == NULL)
   {
      printf("Failed to open file\n");
      exit(1);
   }

   int rt = fscanf(fp, "%f %f %f %f %f", &f1, &f2, &f3, &f4, &f5);
   printf("f1 = %f\n", f1);
   printf("f2 = %f\n", f2);
   printf("f3 = %f\n", f3);
   printf("f4 = %f\n", f4);
   printf("f5 = %f\n", f5);
   printf("rt = %d\n", rt);

   return 0;
}

文件1.txt内容如下图所示:

在这里插入图片描述

代码运行结果如下图所示:

在这里插入图片描述

代码及运行结果分析:

  1. fscanf()函数从1.txt文件中读取浮点数,并赋值给float型变量f1、f2、f3、f4、f5;
  2. fscanf()函数返回值为rt=5表示成功读取并赋值的项的数量。

5.2 示例2

使用fscanf()函数读取空文件,代码运行结果如下图所示:

在这里插入图片描述

代码及运行结果分析:

  1. 因为文件为空,所scanf()第一次读取时首先读到文件结束符,所以返回EOF=-1。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1169190.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Node.js 中解析 HTML 的方法介绍

在 Web 开发中,解析 HTML 是一个常见的任务,特别是当我们需要从网页中提取数据或操作 DOM 时。掌握 Node.js 中解析 HTML 的各种方式,可以大大提高我们提取和处理网页数据的效率。本文将介绍如何在 Node.js 中解析 HTML。 基本概念 HTML 解析…

【广州华锐互动】VR野外求生技能学习,让你感受真实的冒险之旅!

随着科技的迅速发展,虚拟现实(VR)技术为人们提供了一个全新的、身临其境的探险体验。通过将用户带入一个仿真的、沉浸式的虚拟环境,VR互动体验让人们在安全的氛围中感受到野外探险的乐趣。本文将从视觉呈现、沉浸式体验、交互性和应用范围四个方面&#…

MATLAB颜色索引表---持续更新中--各个平台都可使用

MATLAB颜色索引表—持续更新中–各个平台都可使用

探索ChatGPT在学术写作中的应用与心得

随着人工智能的迅猛发展,ChatGPT作为一种强大的自然语言处理模型,逐渐在学术界引起了广泛的关注。本文将探讨ChatGPT在学术写作中的应用,并分享使用ChatGPT进行学术写作时的一些经验和心得。 01 — ChatGPT在学术写作中的应用 1.文献综述和…

【ChatOCR】OCR+LLM定制化关键信息抽取(附开源大语言模型汇总整理)

目录 背景技术方案存在的问题及解决思路关键信息提取结果其他解决方案替换文心一言LangChain大型多模态模型(Large Multimodal Model, LMM) 开源大模型汇总LLaMA —— Meta 大语言模型Stanford Alpaca —— 指令调优的 LLaMA 模型Lit-LLaMA —— 基于 na…

基于单片机的语音存储与回放系统设计

博主主页:单片机辅导设计 博主简介:专注单片机技术领域和毕业设计项目。 主要内容:毕业设计、简历模板、学习资料、技术咨询。 文章目录 主要介绍一、控制系统设计1.1 系统方案设计1.2 系统工作原理 二、硬件电路设计总电路设计图 三、 软件设…

shufflenet v2 yolo

设计理念 1x1卷积进行平衡输入和输出的通道大小;组卷积要谨慎使用,注意分组数;避免网络的碎片化;减少元素级运算。 ShuffleNet v2中弃用了1x1的group convolution操作,而直接使用了input/output channels数目相同的…

win10系统nodejs的安装npm教程

1.在官网下载nodejs,https://nodejs.org/en 2,双击nodejs的安装包 3,点击 next 4,勾选I accpet the terms in…… 5,第4步点击next进入配置安装路径界面 6,点击next,选中Add to PATH ,旁边…

高压检测设备

比如:高压数字表、高压差分探头、指针式高压表、电流探枪、高压探棒 这些设备都是用来测量高压的,有的测电压,有的测电流。 高压数字表: 单独使用,功能很简单,有2个正负极探爪,把2个探爪连接到…

Linux 安装 RocketMq

RocketMq是阿里出品(基于MetaQ)的开源中间件,已捐赠给Apache基金会并成为Apache的顶级项目。基于java语言实现,十万级数据吞吐量,ms级处理速度,分布式架构,功能强大,扩展性强。 官网…

大厂面试题-IO和NIO区别

从下面几个方面来回答: 首先,I/O,指的是IO流,它可以实现数据从磁盘中的读取以及写入。 实际上,除了磁盘以外,内存、网络都可以作为I/O流的数据来源和目的地。 在Java里面,提供了字符流和字节…

http协议 - 常见渗透测试姿势

文章目录 HTTP是什么GET 请求POST请求HEAD请求 HTTP绕过练习靶场修改添加请求头部字段内容绕过referer User-Agent x-forwarded-for进入题目内容(1) 修改添加cookie字段内容绕过cookie进入题目内容(2) 工具: Burp Sui…

NodeJS 安装及环境配置

下载地址:https://nodejs.org/zh-cn/download/ 安装 NodeJS 根据自己电脑系统及位数选择,一般都选择 windows 64位 .msi 格式安装包。 所用命令: node -v npm -v PS:如果以上两条命令都能执行成功,表示安装完成&#…

Compose-Multiplatform在Android和iOS上的实践

本文字数:4680字 预计阅读时间:30分钟 01 简介 之前我们探讨过KMM,即Kotlin Multiplatform Mobile,是Kotlin发布的移动端跨平台框架。当时的结论是KMM提倡将共有的逻辑部分抽出,由KMM封装成Android(Kotlin/JVM)的aar和…

NUUO网络摄像头(NVR)RCE漏洞复现

简介 NUUO Network Video Recorder(NVR)是中国台湾NUUO公司的一款网络视频记录器。 NUUO NVR视频存储管理设备的__debugging_center_utils___.php文件存在未授权远程命令执行漏洞,攻击者可在没有任何权限的情况下通过log参数执行任意命令。…

【优选算法系列】【专题九链表】第一节.链表常用技巧和操作总结(2. 两数相加)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、链表常用技巧和操作总结二、两数相加 2.1 题目描述 2.2 题目解析 2.2.1 算法原理 2.2.2 代码编写总结 前言 一、链表常…

Python:字符串格式化

文章目录 %用法使用format方法进行格式化 %用法 格式字符说明%s字符串%c单个字符%d十进制整数%o八进制整数%x十六进制整数%e指数(基底写为e)%E指数(基底写为E) x 1235 print(%o % x) print(%d % x) print(%x % x) print(%e % x) print(%s % 65) print(%c % a)使用format方法…

mac M2 出现 zsh: command not found: brew问题解决方案

mac M2 出现 zsh: command not found: brew问题解决方案 各操作系统安装第三方工具指令 1 . mac os 安装第三方工具命令brew 2. RedHat系列:Redhat、Centos、Fedora等 安装第三方工具命令 yum 3. Debian系列:Debian、Ubuntu 安装第三方工具命令 apt-get…

校验算法--md5算法理解(c语言)

​​​​​​​​​​​​​​RFC 1321:MD5 消息摘要算法 (rfc-editor.org)https://www.rfc-editor.org/rfc/rfc1321官方参考文档,可以直接拷贝References里的代码,MD类型定义为5后直接使用里面的代码是可以成功执行的,MDString这…

MySQL的基本建表及操作

MySQL的基本建表及操作 文章目录 MySQL的基本建表及操作一、表的结构二、建库和建表1.建库2.建表 三、复制表四、查表和删表 一、表的结构 数据库表的结构由表名、列名、列数据类型、列约束和索引等元素组成。具体来说,下面是数据库表的结构元素的详细解释&#xf…