C语言中fscanf的作用,C语言中fgets和fscanf区别详解

搜索热词

C语言中fgets和fscanf区别详解

一、作用上的大概区别:

①fgets:从文件中读取一行数据存入缓冲区(fgets遇到回车才会结束,不对空格和回车做任何转换就录入到缓冲区,结束后再往缓冲区写多一个\0,所以它是读一行数据)

②fscanf:从文件中读取一段数据存入缓冲区(fscanf遇到空格或回车就结束,它会把空格或回车转换为\0,所以它是读一小段数据)

二、举个例子:把a.txt文件中的内容复制到b.txt。

a.txt中的内容(第一行中“我爱你小白”和“开玩笑”中间有个空格,每行的最后都有回车):

我爱你小白 开玩笑

哈哈

开玩笑

1、使用fgets读取a.txt文件并写入到b.txt的程序片段:

FILE *f1 = fopen("a.txt","r");//只读方式打开a.txt,该文件必须存在

FILE *f2 = fopen("b.txt","w");//以只写方式打开b.txt,该文件可以不存在

if (f1 == NULL)//如果文件不存在,直接结束

{

return 0;

}

char buf[1024] = { 0 };//缓冲区

while (!feof(f1))

{

memset(buf,sizeof(buf));//清空缓冲区

fgets(buf,sizeof(buf),f1);//从文件中读取一行数据存入缓冲区(fgets遇到回车才会结束,不对空格和回车做任何转换就录入到缓冲区,结束后再往缓冲区写多一个\0,所以它是读一行数据)

fputs(buf,f2);

}

fclose(f1);//注意最后关闭文件

fclose(f2);//注意最后关闭文件

运行结果:

15093726881.png?201793083144

2、使用fscanf读取a.txt文件并写入到b.txt的程序片段:

FILE *f1 = fopen("a.txt","r");//只读方式打开a.txt

FILE *f2 = fopen("b.txt",sizeof(buf));//清空缓冲区

fscanf(f1,"%s",buf);//从文件中读取一段数据存入缓冲区(fscanf遇到空格或回车就结束,它会把空格或回车转换为\0,所以它是读一小段数据)

fputs(buf,f2);

}

fclose(f1);//注意最后关闭文件

fclose(f2);//注意最后关闭文件

运行结果:

15093726882.png?201793083229

三、结论

1、fgets遇到“空格”就跟遇到平常的字符一样读取,遇到“回车”则结束本次读取,最后往缓冲区(char *buf[])的最后加多一个"\0"表示本次读取一行结束。

2、fscanf不论遇到“空格”还是“回车”,都当作'\0'读取到缓冲区中(char *buf[]),并结束本次读取。

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值