fscanf() 和 fprintf() 函数与前面使用的 scanf() 和 printf() 功能相似,都是格式化读写函数,两者的区别在于 fscanf() 和 fprintf() 的读写对象不是键盘和显示器,而是磁盘文件。

这两个函数的原型为:

int fscanf ( FILE *fp, char * format, ... );
int fprintf ( FILE *fp, char * format, ... );

fp 为文件指针,format 为格式控制字符串,… 表示参数列表。与 scanf() 和 printf() 相比,它们仅仅多了一个 fp 参数。例如:

FILE *fp;
int i, j;
char *str, ch;
fscanf(fp, "%d %s", &i, str);
fprintf(fp,"%d %c", j, ch);

fprintf() 返回成功写入的字符的个数,失败则返回负数。fscanf() 返回参数列表中被成功赋值的参数个数。

示例 用 fscanf 和 fprintf 函数来完成对学生信息的读写。

#include<stdio.h>#define N 2struct stu{char name[10];int num;int age;float score;
} boya[N], boyb[N], *pa, *pb;int main(){FILE *fp;int i;pa=boya;pb=boyb;if( (fp=fopen("D:\\demo.txt","wt+")) == NULL ){puts("Fail to open file!");exit(0);}//从键盘读入数据,保存到boyaprintf("Input data:\n");for(i=0; i<N; i++,pa++){scanf("%s %d %d %f", pa->name, &pa->num, &pa->age, &pa->score);   }pa = boya;//将boya中的数据写入到文件for(i=0; i<N; i++,pa++){fprintf(fp,"%s %d %d %f\n", pa->name, pa->num, pa->age, pa->score);   }//重置文件指针rewind(fp);//从文件中读取数据,保存到boybfor(i=0; i<N; i++,pb++){fscanf(fp, "%s %d %d %f\n", pb->name, &pb->num, &pb->age, &pb->score);}pb=boyb;//将boyb中的数据输出到显示器for(i=0; i<N; i++,pb++){printf("%s  %d  %d  %f\n", pb->name, pb->num, pb->age, pb->score);}fclose(fp);return 0;
}

运行结果:

Input data:
Tom 2 15 90.5↙
Li 1 14 99↙
Tom  2  15  90.500000
Li 1  14  99.000000

打开 D:\demo.txt,发现文件的内容是可以阅读的,格式非常清晰。用 fprintf() 和 fscanf() 函数读写配置文件、日志文件会非常方便,不但程序能够识别,用户也可以看懂,可以手动修改。

如果将 fp 设置为 stdin,那么 fscanf() 函数将会从键盘读取数据,与 scanf 的作用相同;设置为 stdout,那么 fprintf() 函数将会向显示器输出内容,与 printf 的作用相同。例如:

#include<stdio.h>
int main(){int a, b, sum;fprintf(stdout, "Input two numbers: ");fscanf(stdin, "%d %d", &a, &b);sum = a + b;fprintf(stdout, "sum=%d\n", sum);return 0;
}

运行结果:

Input two numbers: 10 20↙
sum=30

C语言fscanf和fprintf函数的用法详解相关推荐

  1. 第十一章 文件操作_C语言fscanf和fprintf函数的用法详解(格式化读写文件)

    fscanf() 和 fprintf() 函数与前面使用的 scanf() 和 printf() 功能相似,都是格式化读写函数,两者的区别在于 fscanf() 和 fprintf() 的读写对象不是 ...

  2. c语言fseek128字节,C语言rewind和fseek函数的用法详解(随机读写文件)

    前面介绍的文件读写函数都是顺序读写,即读写文件只能从头开始,依次读写各个数据.但在实际开发中经常需要读写文件的中间部分,要解决这个问题,就得先移动文件内部的位置指针,再进行读写.这种读写方式称为随机读 ...

  3. C语言rewind函数返回值为空,C语言rewind和fseek函数的用法详解(随机读写文件)...

    前面介绍的文件读写函数都是顺序读写,即读写文件只能从头开始,依次读写各个数据.但在实际开发中经常需要读写文件的中间部分,要解决这个问题,就得先移动文件内部的位置指针,再进行读写.这种读写方式称为随机读 ...

  4. python rewind_C语言rewind和fseek函数的用法详解(随机读写文件)

    前面介绍的文件读写函数都是顺序读写,即读写文件只能从头开始,依次读写各个数据.但在实际开发中经常需要读写文件的中间部分,要解决这个问题,就得先移动文件内部的位置指针,再进行读写.这种读写方式称为随机读 ...

  5. php函数find的用法,c语言find函数的用法详解

    c语言find函数的用法详解 C语言之find()函数 find函数用于查找数组中的某一个指定元素的位置. 比如:有一个数组[0, 0, 5, 4, 4]: 问:元素5的在什么位置,find函数 返回 ...

  6. c语言memcopy_C语言中memcpy 函数的用法详解

    C语言中memcpy 函数的用法详解 memcpy(内存拷贝函数) c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址 ...

  7. c语言数据类型int的用法,C语言基本数据类型:整型(int)用法详解|C语言学习

    C语言基本数据类型:整型(int)用法详解 1. 整型 int C 语言提供了很多整数类型(整型),这些整型的区别在于它们的取值范围的大小,以及是否可以为负.int 是整型之一,一般被称为整型.以后, ...

  8. snprintf函数的用法详解

    c语言的snprintf函数的用法详解 snprintf()函数是一种格式化函数,用于将格式化的字符串存储到一个字符数组中,并且有一个参数用来限制输出的最大字符数. 语法: int snprintf ...

  9. java string()函数_转载java String.split()函数的用法详解

    转载java String.split()函数的用法详解 如果您发现本文排版有问题,可以先点击下面的链接切换至老版进行查看!!!在java.lang包中有String.split()方法的原型是: p ...

最新文章

  1. 人群密度估计--CNN-based Cascaded Multi-task Learning of High-level Prior and Density Estimation for Crowd
  2. java继承与多态_Java继承与多态
  3. POJ1236Network of Schools——强连通分量缩点建图
  4. 开红数显示服务器为空,网维大师常见问题:图标空白或红号问号
  5. process调用protothread机制的相关宏定义——用HelloWorld进程诠释
  6. SAP License:自动过账科目设置
  7. 实现Kubernetes跨集群服务应用的高可用
  8. ominigraffle 模板_商河盖梁模板安装
  9. Codeforces Round #248 (Div. 2) B. Kuriyama Mirai's Stones
  10. Rational Rose下载安装教程
  11. 高斯过程回归(Gaussian process regression)原理详解及python代码实战
  12. 关于spring security的URL路径验证问题
  13. 分布式CAP是什么?
  14. 电力设备巡检解决方案
  15. python进行EXCEL表格自动填充
  16. Readiris Pro 17 for Mac(光学识别OCR软件)
  17. 用户行为分析(Python)
  18. 迦瓦栈队 团队第六周项目总结
  19. (Note)夜光藻赤潮
  20. C++:利用printf 输出string

热门文章

  1. vue 修改对象的值视图没有发生改变_在vue中处理对象属性改变视图不更新问题? - echart...
  2. mysql主从配置_MySQL主从配置详解
  3. IDEA Translation插件安装及设置鼠标悬浮提示的自动翻译
  4. spring中context:property-placeholder标签详解
  5. mysql一共有多少引擎_MySQL存储引擎你们知道多少?
  6. 抓球球的机器人应该怎么玩_王者荣耀:在游戏中当自己优势队友劣势的时候应该怎么玩?...
  7. linux下IPROTO_TCP,TCP/IP协议栈在Linux内核中的运行时序分析
  8. Mac AndroidStudio常用快捷键
  9. mysql启动触发器_MYSQL中禁用/启动触发器
  10. Java中的Unsafe