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

2023-11-04 06:04
文章标签 函数 学习 语法 13 fscanf

本文主要是介绍【C语法学习】13 - fscanf()函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 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。

这篇关于【C语法学习】13 - fscanf()函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/343744

相关文章

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

mysql递归查询语法WITH RECURSIVE的使用

《mysql递归查询语法WITHRECURSIVE的使用》本文主要介绍了mysql递归查询语法WITHRECURSIVE的使用,WITHRECURSIVE用于执行递归查询,特别适合处理层级结构或递归... 目录基本语法结构:关键部分解析:递归查询的工作流程:示例:员工与经理的层级关系解释:示例:树形结构的数

Java使用Stream流的Lambda语法进行List转Map的操作方式

《Java使用Stream流的Lambda语法进行List转Map的操作方式》:本文主要介绍Java使用Stream流的Lambda语法进行List转Map的操作方式,具有很好的参考价值,希望对大... 目录背景Stream流的Lambda语法应用实例1、定义要操作的UserDto2、ListChina编程转成M

Kotlin运算符重载函数及作用场景

《Kotlin运算符重载函数及作用场景》在Kotlin里,运算符重载函数允许为自定义类型重新定义现有的运算符(如+-…)行为,从而让自定义类型能像内置类型那样使用运算符,本文给大家介绍Kotlin运算... 目录基本语法作用场景类对象数据类型接口注意事项在 Kotlin 里,运算符重载函数允许为自定义类型重

Pandas中统计汇总可视化函数plot()的使用

《Pandas中统计汇总可视化函数plot()的使用》Pandas提供了许多强大的数据处理和分析功能,其中plot()函数就是其可视化功能的一个重要组成部分,本文主要介绍了Pandas中统计汇总可视化... 目录一、plot()函数简介二、plot()函数的基本用法三、plot()函数的参数详解四、使用pl

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

Python正则表达式语法及re模块中的常用函数详解

《Python正则表达式语法及re模块中的常用函数详解》这篇文章主要给大家介绍了关于Python正则表达式语法及re模块中常用函数的相关资料,正则表达式是一种强大的字符串处理工具,可以用于匹配、切分、... 目录概念、作用和步骤语法re模块中的常用函数总结 概念、作用和步骤概念: 本身也是一个字符串,其中

Mysql用户授权(GRANT)语法及示例解读

《Mysql用户授权(GRANT)语法及示例解读》:本文主要介绍Mysql用户授权(GRANT)语法及示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql用户授权(GRANT)语法授予用户权限语法GRANT语句中的<权限类型>的使用WITH GRANT

HTML5表格语法格式详解

《HTML5表格语法格式详解》在HTML语法中,表格主要通过table、tr和td3个标签构成,本文通过实例代码讲解HTML5表格语法格式,感兴趣的朋友一起看看吧... 目录一、表格1.表格语法格式2.表格属性 3.例子二、不规则表格1.跨行2.跨列3.例子一、表格在html语法中,表格主要通过< tab