C语言之文件读写——fscanf(),fprintf()详解
发布日期:2021-06-29 06:24:56 浏览次数:2 分类:技术文章

本文共 2127 字,大约阅读时间需要 7 分钟。

1.fscanf():

fscanf()函数的头文件是<stdio.h>,

函数原型 int fscanf(FILE*stream, constchar*format, [argument...]);

其功能为根据数据格式(format)从输入流(stream)中写入数据(argument);

【参数】stream为文件指针,format为格式化字符串,argument 为格式化控制符对应的参数。

 

从文件指针fp指向的文件中,按format中对应的控制格式读取数据,并存储在agars对应的变量中;

原型: fscanf(FILE *fp, const char *format, agars)

#include
#include
int main(){ FILE *fp; char ch; fp = fopen("test.txt","r"); if(fp == NULL) { printf("Open filefailure!"); exit(1); } else { fscanf(fp,"%s",&ch); } printf("%s\n",ch); fclose(fp); return 0;}

对于上面else中的内容需注意一下几点:

1.如果要读取一个整数(该整数必须在所存变量的数据类型表示的范围之内)则为:fscanf(fp, “%d”, &ch),而此时ch应该定义为int;若读取的数据大于int所能表示的范围,则读取的数据屏幕显示为负数,即读取的数据发生越界,如果此时的ch依然为char型,则运行时报错(内存读写错误)。

2.如果要读取字符串,则ch应该定义为char型数组或指针(指针需分配空间),而不能将其定义为char型,否则也会报错(内存读写错误);

3.输出数据时的数据格式应该和读取数据时的控制格式相同,除非进行强制转换。

4.使用fscanf()时,其中的变量agars应该取其地址;

5.对于文件的操作,记得文件打开操作后要关闭。

对于fscanf()主要应用

   按行读取一个文件中的所有内容 依次读取每行相隔的几个数据,具体参照以下示例:

#include
#include
int main(){ FILE *fp; char *ch, *ah; ch =(char *) malloc(sizeof(char) * 100); ah =(char *) malloc(sizeof(char) * 100); fp = fopen("test.txt","r"); if(fp == NULL) { printf("Open filefailure!"); exit(1); } else { while(!feof(fp)) { fscanf(fp, “%s”, ch); printf(“%s”, ch);//这两行为按行读取所有数据 fscanf(fp, “%s%s”, ch, ah); printf(“The value of ch and ah is:%s %s\n”,ch,ah);//这两行为分别读取每行相隔的几个数据 } } printf("%s\n",ch); free(ch); free(ah); fclose(fp); return 0;}

2.fprintf():

将agars(参数表)内各项的值,按format(格式控制字符串)所表示的格式,将数据格式为字符串的形式写入到文件指针fp指向的文件中。

原型:fprintf(FILE *fp, const char *format, agars)

fprintf()和fscanf()相对应,其用法也基本和fscanf()相同。具体参照以下示例:

#include
#include
int main(){ FILE *fp; fp = fopen("test.txt","a+"); fprintf(fp,“%d %d”,123456,789);//将123456和789写到test.txt文件中 fprintf(fp,"%s %s","China","ChongQing"); //将字符串China和ChongQing追加写到test.txt文件中 fclose(fp); return 0;}

 

参考:https://blog.csdn.net/jhg1204/article/details/7932187

          

 

 

转载地址:https://blog.csdn.net/zhuiqiuzhuoyue583/article/details/107151385 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:CSDN如何查看自己关注的博客专栏
下一篇:C++ 从TXT文件中一行一行的读取数据并且保存到数组中

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月28日 16时02分28秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章