C语言fscanf和fprintf函数的用法详解
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函数的用法详解相关推荐
- 第十一章 文件操作_C语言fscanf和fprintf函数的用法详解(格式化读写文件)
fscanf() 和 fprintf() 函数与前面使用的 scanf() 和 printf() 功能相似,都是格式化读写函数,两者的区别在于 fscanf() 和 fprintf() 的读写对象不是 ...
- c语言fseek128字节,C语言rewind和fseek函数的用法详解(随机读写文件)
前面介绍的文件读写函数都是顺序读写,即读写文件只能从头开始,依次读写各个数据.但在实际开发中经常需要读写文件的中间部分,要解决这个问题,就得先移动文件内部的位置指针,再进行读写.这种读写方式称为随机读 ...
- C语言rewind函数返回值为空,C语言rewind和fseek函数的用法详解(随机读写文件)...
前面介绍的文件读写函数都是顺序读写,即读写文件只能从头开始,依次读写各个数据.但在实际开发中经常需要读写文件的中间部分,要解决这个问题,就得先移动文件内部的位置指针,再进行读写.这种读写方式称为随机读 ...
- python rewind_C语言rewind和fseek函数的用法详解(随机读写文件)
前面介绍的文件读写函数都是顺序读写,即读写文件只能从头开始,依次读写各个数据.但在实际开发中经常需要读写文件的中间部分,要解决这个问题,就得先移动文件内部的位置指针,再进行读写.这种读写方式称为随机读 ...
- php函数find的用法,c语言find函数的用法详解
c语言find函数的用法详解 C语言之find()函数 find函数用于查找数组中的某一个指定元素的位置. 比如:有一个数组[0, 0, 5, 4, 4]: 问:元素5的在什么位置,find函数 返回 ...
- c语言memcopy_C语言中memcpy 函数的用法详解
C语言中memcpy 函数的用法详解 memcpy(内存拷贝函数) c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址 ...
- c语言数据类型int的用法,C语言基本数据类型:整型(int)用法详解|C语言学习
C语言基本数据类型:整型(int)用法详解 1. 整型 int C 语言提供了很多整数类型(整型),这些整型的区别在于它们的取值范围的大小,以及是否可以为负.int 是整型之一,一般被称为整型.以后, ...
- snprintf函数的用法详解
c语言的snprintf函数的用法详解 snprintf()函数是一种格式化函数,用于将格式化的字符串存储到一个字符数组中,并且有一个参数用来限制输出的最大字符数. 语法: int snprintf ...
- java string()函数_转载java String.split()函数的用法详解
转载java String.split()函数的用法详解 如果您发现本文排版有问题,可以先点击下面的链接切换至老版进行查看!!!在java.lang包中有String.split()方法的原型是: p ...
最新文章
- 人群密度估计--CNN-based Cascaded Multi-task Learning of High-level Prior and Density Estimation for Crowd
- java继承与多态_Java继承与多态
- POJ1236Network of Schools——强连通分量缩点建图
- 开红数显示服务器为空,网维大师常见问题:图标空白或红号问号
- process调用protothread机制的相关宏定义——用HelloWorld进程诠释
- SAP License:自动过账科目设置
- 实现Kubernetes跨集群服务应用的高可用
- ominigraffle 模板_商河盖梁模板安装
- Codeforces Round #248 (Div. 2) B. Kuriyama Mirai's Stones
- Rational Rose下载安装教程
- 高斯过程回归(Gaussian process regression)原理详解及python代码实战
- 关于spring security的URL路径验证问题
- 分布式CAP是什么?
- 电力设备巡检解决方案
- python进行EXCEL表格自动填充
- Readiris Pro 17 for Mac(光学识别OCR软件)
- 用户行为分析(Python)
- 迦瓦栈队 团队第六周项目总结
- (Note)夜光藻赤潮
- C++:利用printf 输出string
热门文章
- vue 修改对象的值视图没有发生改变_在vue中处理对象属性改变视图不更新问题? - echart...
- mysql主从配置_MySQL主从配置详解
- IDEA Translation插件安装及设置鼠标悬浮提示的自动翻译
- spring中context:property-placeholder标签详解
- mysql一共有多少引擎_MySQL存储引擎你们知道多少?
- 抓球球的机器人应该怎么玩_王者荣耀:在游戏中当自己优势队友劣势的时候应该怎么玩?...
- linux下IPROTO_TCP,TCP/IP协议栈在Linux内核中的运行时序分析
- Mac AndroidStudio常用快捷键
- mysql启动触发器_MYSQL中禁用/启动触发器
- Java中的Unsafe