时间:2021-05-20
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, 0, sizeof(buf));//清空缓冲区 fgets(buf, sizeof(buf), f1);//从文件中读取一行数据存入缓冲区(fgets遇到回车才会结束,不对空格和回车做任何转换就录入到缓冲区,结束后再往缓冲区写多一个\0,所以它是读一行数据) fputs(buf, f2);}fclose(f1);//注意最后关闭文件fclose(f2);//注意最后关闭文件运行结果:
2、使用fscanf读取a.txt文件并写入到b.txt的程序片段:
FILE *f1 = fopen("a.txt", "r");//只读方式打开a.txtFILE *f2 = fopen("b.txt", "w");//以只写方式打开b.txt,该文件可以不存在if (f1 == NULL)//如果文件不存在,直接结束{ return 0;}char buf[1024] = { 0 };//缓冲区while (!feof(f1)){ memset(buf, 0, sizeof(buf));//清空缓冲区 fscanf(f1, "%s", buf);//从文件中读取一段数据存入缓冲区(fscanf遇到空格或回车就结束,它会把空格或回车转换为\0,所以它是读一小段数据) fputs(buf, f2);}fclose(f1);//注意最后关闭文件fclose(f2);//注意最后关闭文件运行结果:
三、结论
1、fgets遇到“空格”就跟遇到平常的字符一样读取,遇到“回车”则结束本次读取,最后往缓冲区(char *buf[])的最后加多一个"\0"表示本次读取一行结束。2、fscanf不论遇到“空格”还是“回车”,都当作'\0'读取到缓冲区中(char *buf[]),并结束本次读取。如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
C语言文件操作中fgets、fputs函数详解先给出apifgets语法:#includechar*fgets(char*str,intnum,FILE*str
C语言中const和C++中的const区别详解C++的const和C语言的#define都可以用来定义常量,二者是有区别的,const是有数据类型的常量,而宏
C语言中值传递和指针传递实例详解在C语言中,函数的参数和返回值的传递方式有两种:值传递和指针传递。值传递和指针传递初学者总会有一种朦胧的感觉,所以建议把指针传递
nullptr和null均是C语言中的数据类型,其主要区别有: 1、nullptr在C语言中一般为关键字,表示空指针,而NULL只是一个宏定义。 2、nul
字符读写函数:fgetc和fputc字符串读写函数:fgets和fputs数据块读写函数:freed和fwrite格式化读写函数:fscanf和fprinf1.