一、作用上的大概区别:

①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.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));//清空缓冲区fscanf(f1, "%s", buf);//从文件中读取一段数据存入缓冲区(fscanf遇到空格或回车就结束,它会把空格或回车转换为\0,所以它是读一小段数据)fputs(buf, f2);
}fclose(f1);//注意最后关闭文件
fclose(f2);//注意最后关闭文件

运行结果:

三、结论

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

fgets和fscanf区别相关推荐

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

    搜索热词 C语言中fgets和fscanf区别详解 一.作用上的大概区别: ①fgets:从文件中读取一行数据存入缓冲区(fgets遇到回车才会结束,不对空格和回车做任何转换就录入到缓冲区,结束后再往 ...

  2. c语言中的fscanf是啥意思,详解C语言中fgets和fscanf区别

    fscanf函数是C语言的文件格式读取函数的方法之一,它使用空格.制表符和回车来分割不同的单词,这样可以让我们使用起来更方便,下面就让爱站技术频道小编带你来学习详解C语言中fgets和fscanf区别 ...

  3. gets和fgets函数及其区别,C语言gets和fgets函数详解

    gets和fgets函数及其区别,C语言gets和fgets函数详解 每当讨论 gets 函数时,大家不由自主地就会想起 1988 年的"互联网蠕虫",它在 UNIX 操作系统的 ...

  4. C语言中fgetc()、fgets()之间的区别

    在学习文件那一快关于读写文件中的字符让我折腾了一阵子,总是把这几个函数混淆,今天有时间就整理下,并分享下个人的心得,希望对大家有帮助. 1.fgetc() 和 fgets() 之间的区别 fgetc ...

  5. c语言中 gets puts,C语言的文件输入输出 getc putc gets puts fgets puts fscanf fprintf

    系统调用I/O函数open,write,read,都是生成文件描述符,然后对文件描述符操作,比如:STDIN_FILENO,STDOUT_FILENO 标准I/O函数,则是由fopen,fgets,f ...

  6. c语言中gets与fgets,gets和fgets函数及其区别,C语言gets和fgets函数详解

    每当讨论 gets 函数时,大家不由自主地就会想起 1988 年的"互联网蠕虫",它在 UNIX 操作系统的 finger 后台程序中使用一个 gets 调用作为它的攻击方式之一. ...

  7. C语言fputc() 和 fputs() 之间的区别

    上篇文章我们讲解了C语言中fgetc().fgets()之间的区别 接下来我在来讲解下fputc() 和 fputs() 之间的区别 1.fputc 是 file output char 的所以,意思 ...

  8. 大一学生一周十万字爆肝版C语言总结笔记

    目录 前言 大学计算机基础教育: 为什么选择C语言入门? 大牛给计算机专业学生的 7 个建议 进行程序设计要解决以下的两个问题: 每一位学编程的都应该好好读读的Zen of Python(Python ...

  9. c语言中换行符的ans2码,二级C语言复习

    <二级C语言复习>由会员分享,可在线阅读,更多相关<二级C语言复习(113页珍藏版)>请在人人文库网上搜索. 1.C程序设计复习,(一)要点 (二)概念 50% -疑难举例 ( ...

最新文章

  1. R语言包_manipulate
  2. 软件架构设计-五视图方法论
  3. hdfs入门——常用命令
  4. SCCM 2007系列1 安装前的准备
  5. PL/pgSQL的anyelement例子
  6. 后疫情时代,乳企如何迎来下一个风口?
  7. php中删除数组元素的函数,php删除数组中的元素函数用法汇总
  8. 无限循环小数POJ1930
  9. 设计模式 命令模式 实例_根据您的命令-命令设计模式
  10. 春风app一直显示服务器内部错误,CHANGES.md
  11. 力扣513. 找树左下角的值(JavaScript)
  12. 老板为什么越来越难熬?
  13. React与前端:React家族介绍
  14. 【原创】STM32低功耗模式及中断唤醒(基于BMI160及RTC)的研究
  15. Oracle之现有表上建新表、操作符、字符函数
  16. 等比数列求和推导及优化
  17. N-Queen(java实现)
  18. STM32程序烧录方式总结
  19. MOS管做二极管使用
  20. C++语言——求圆柱表面积

热门文章

  1. WPF 控件专题 Menu 控件详解
  2. Mysql--性能优化
  3. delauney 三角化
  4. secureCRT连接不上路由器
  5. [iOS]渐变毛玻璃效果
  6. C# Console.WriteLine堵塞进程
  7. CF676B Pyramid of Glasses 题解
  8. 树莓派4b与Manjaro,安装、配置、修复WiFi频段5G和Country Code
  9. linux memcached 缓存失效,高并发访问下避免对象缓存失效引发Dogpile效应
  10. Java 实现安卓手机拍照全景模式