C语言按行读取文件的正确使用:fgets、feof、ferror

article/2025/10/9 16:49:02

转自

https://blog.csdn.net/yss28/article/details/53453959

一、fgets函数

原型

char *fgets(char *buf, int bufsize, FILE *stream);

功能

fgets函数用来从stream所指文件中读入bufsize-1个字符放入buf为起始地址的空间内;如果在未读满bufsize-1个字符之时,已读到一个换行符或一个EOF(文件结束标志),则结束本次读操作,读入的字符串中最后包含读到的换行符。因此,调用fgets函数时,最多只能读入bufsize-1个字符。读入结束后,系统将自动在最后加’\0’,并以buf作为函数值返回。

返回值

  • 成功,则返回第一个参数buf;
  • 在读字符时遇到end-of-file,则eof指示器被设置,如果还没读入任何字符就遇到这种情况,则buf保持原来的内容,返回NULL;
  • 如果发生读入错误,error指示器被设置,返回NULL,buf的值可能被改变。

stream文件流指针体偏移原则

如果使用fgets()读取某个文件,第一次读取的bufsize为5,而文件的第一行有10个字符(算上’\n’),那么读取文件的指针会偏移至当前读取完的这个字符之后的位置。也就是第二次再用fgets()读取文件的时候,则会继续读取其后的字符。
如果使用fgets() 读取文件的时候bufsize大于该行的字符总数加2(多出来的两个,一个保存文件本身的’\n’换行,一个保存字符串本身的结束标识’\0’),文件并不会继续读下去,仅仅只是这一行读取完,随后指向文件的指针会自动偏移至下一行。

二、feof函数

原型

int feof(FILE *stream);

功能

feof是检测流上的文件结束符,如果文件结束,则返回非0值,否则返回0,文件结束符只能被clearerr()清除。

三、ferror

原型

int ferror(FILE *stream);

功能

在调用各种输入输出函数(如 putc.getc.fread.fwrite等)时,如果出现错误,除了函数返回值有所反映外,还可以用ferror函数检查。如果ferror返回值为0,表示未出错。如果返回一个非零值,表示出错。 
对同一个文件每一次调用输入输出函数,均产生一个新的ferror函数值,因此,应当在调用一个输入输出函数后立即检查ferror函数的值,否则信息会丢失。在执行fopen函数时,ferror函数的初始值自动置为0。
 

四、示例

#include <stdio.h>
#include <stdlib.h>int main(void) {char line[256];FILE *f = fopen("1.txt", "rb");while (!feof(f) && !ferror(f)) {strcpy(line, "\n"); fgets(line, sizeof(line), f);printf("-%s", line);}fclose(f);return 0;
}

运行结果:


http://chatgpt.dhexx.cn/article/s9bacS7A.shtml

相关文章

Linux系统下C语言的编程技巧

Linux系统能够为人们提供更加安全实用的效果,保证计算机系统能够稳定的运行。利用Linux系统下首先要进行C语言的编程,掌握编程的技巧能够更好的发挥计算机的作用。如何掌握Linux系统下计算机C语言的编程技巧是计算机发展的关键要素。本文对Linux系统下计算机C语言的编程技巧进行…

C语言使用fgetc()函数

fgets&#xff08;&#xff09;函数用法比单一&#xff0c;请结合代码一起理解 #include "stdio.h" #include "stdlib.h" int main() {FILE *fp; //定义文件指针char filename[200]; //存放输入的文件名字char str; //存放一个职工…

C语言-宏的实现

写一个宏&#xff0c;计算结构体中某变量相对于首地址的偏移。 结果 #define struct(struct_type,numname) (size_t)&(((struct_type*)0)->numname)实现过程 #include<stdio.h> #define struct(struct_type,numname) (size_t)&(((struct_type*)0)-…

C语言中fgets()函数回车符相关的问题

fgets函数 目录 fgets函数fgets函数与gets函数fgets函数包含回车符原因消去回车符需要消去回车符的情况任务描述编程要求测试说明思路代码问题关键 消去操作 fgets函数与gets函数 请移步下方链接&#xff0c;其中包含了scanf函数、gets函数以及fgets函数的区分总结&#xff1a…

c语言中fgetc函数的介绍

点击上方蓝字关注我&#xff0c;了解更多咨询 1、fgetc函数返回的字符实际上是文件流中位置指针指向的字符。 当fgetc函数读取错误时&#xff0c;返回EOF并设置文件错误标志位。 2、该函数以无符号char强制转换为int的形式返回读取的字符&#xff0c;如果到达文件末尾或出现读错…

fgets()函数的详解-使用技巧-C语言基础

这篇文章要探讨的是“fgets()函数的详解以及使用时需要注意的一些细节”。涉及fgets()函数的应用和需要注意的问题。属于C语言基础篇&#xff08;持续更新&#xff09;。 fgets()&#xff08;函数原型&#xff1a;char *fgets(char *restrict str, int size, FILE *restrict s…

男女声语音转换

男女声特点 &#xff08;此部分转载自https://blog.csdn.net/u011389706/article/details/78965233&#xff09; 男女声基本区别 男女声主要区别在于男女声基音频率&#xff08;pitch frequency&#xff09;的高低。一般女声的音调比男声的音调高&#xff0c;这种不同主要是反…

最新游戏陪玩语音聊天系统源码+视频搭建教程

一个人的游戏叫孤独&#xff0c;一群人的游戏才是乐趣&#xff0c;随着电竞产业在国内的快速发展&#xff0c;游戏陪练行业也迅速成长&#xff0c;现在很多游戏玩家为了追求更高质量的游戏体验感&#xff0c;往往会在玩游戏的过程中找陪练&#xff0c;通过陪玩系统进行预约游戏…

伪造微信语音文件的过程分析

说实话&#xff0c;写这篇《续》&#xff0c;小编是很纠结的。我们绝不是要传授犯罪方法&#xff0c;而是要告诉大家&#xff0c;伪造微信语音聊天记录的行为是如何进行的。&#xff08;安卓实测&#xff0c;苹果略有不同&#xff09; 一、微信语音文件的存储 关于这一点&…

微信PC端技术研究(2)-保存聊天语音

微信PC端技术研究-保存聊天语音 转载地址&#xff1a;[原创]微信PC端技术研究(2)-保存聊天语音-软件逆向-看雪论坛-安全社区|安全招聘|bbs.pediy.com 0x0. 前言 最近又学习了某位大佬用CE的方法&#xff0c;大佬的一句话有点醍醐灌顶&#xff0c;然后有了新的感觉&#xff0…

将微信语音消息转换为 mp3

获取语音文件&#xff08;.silk&#xff09; 需要在电脑上实现。首先&#xff0c;查看你的微信 Mac 版本将数据存放在哪个目录下&#xff0c;我的是在这个目录下&#xff1a; /Users/henry/Library/Containers/com.tencent.xinWeChat/Data/Library/Application Support/com.te…

WX Backup - 免费微信聊天记录备份导出与查看工具 (可提取图片/视频/语音)

微信绝对是一个让人爱恨交织的 APP&#xff0c;它在国内几乎完全占据了人们的社交以及生活的方方面面&#xff0c;但腾讯却并没有为微信提供好用的「聊天记录」备份导出和查看的功能。 WX Backup 是一款完全免费的微信聊天记录备份导出工具&#xff0c;支持 Windows 和 Mac&…

微信语音文件转换mp3

1、先找到手机里面的音频文件&#xff08;.amr&#xff09; 2、下载软件silk2mp3 ①双击silk2mp3.exe ②选择文件 ③开始转换 3、本来以为电脑客户端中也能找到相应的文件&#xff0c;但是发现是加密过的&#xff0c;不能用&#xff1b;所以只能使用android手机找到对应文件…

怎么导出微信语音【亲测有效】

在手机上长按你想导出的语音&#xff0c;点收藏 来到我的-收藏&#xff0c;打开刚才收藏语音&#xff0c;右上角三个点点&#xff0c;点转存为笔记 ok放下手机 来到pc端微信 - 收藏&#xff0c;找到刚才的笔记 进去&#xff0c;选中 - 右键 - 复制 发给你的文件传输助手 找到…

微信语音转换成mp3文件保存的简单详细步骤

目录 读者手册 一、前言 二、操作步骤一 把语音转化为silk文件&#xff08;silk后缀的文件&#xff09; 1.长按语音收藏&#xff08;手机操作&#xff09; 2.找到主页收藏 3.找到收藏的语音 4.转存为笔记 5.点击笔记里面的语音&#xff08;下面全部电脑操作&#xff0…

如何导出你的微信语音

苏生不惑第145 篇原创文章&#xff0c;将本公众号设为星标&#xff0c;第一时间看最新文章。 关于微信之前写过以下文章&#xff0c;有兴趣可以点击查看&#xff1a; 那些你可能不知道的微信奇技淫巧 那些你可能不知道的网络冷知识奇技淫巧 一个骚操作&#xff0c;公众号粉丝破…

简单3步:微信语音转成mp3

ACM亚洲区域赛获奖者 北漂女程序员 喜欢就关注我吧&#xff01; 在家人眼里&#xff0c;我学的专业就是打杂的。 前天我的嫂子问我怎么把微信聊天语音转换成mp3格式保存分享。 咔咔咔&#xff0c;教程来了。 1&#xff0c;把微信语音信息保存下来 2&#xff0c;找到微信语音信息…

在电脑上微信无法语音聊天,微信听不到语音声音

联想笔记本Windows11微信3.7.6.44 新更新的window系统&#xff0c;有线耳机在其他网页和应用上播放语音都是正常的&#xff0c;耳机肯定没坏&#xff0c;唯独在微信上无法播放语音和语音电话。 解决办法&#xff1a; 1、右击开始菜单&#xff0c;&#xff08;就是Windows开机…

一秒语音是什么软件,微信一秒语音包软件

微信一秒语音包软件是一款专为使用微信聊天的伙伴设计的&#xff0c;汇集了海量聊天语音包素材&#xff0c;并且可以实时更新语音包素材&#xff0c;所以的语音素材内容实时上线热门语音包&#xff0c;操作方法简单&#xff0c;拥有男声、女声等语音&#xff0c;还可以在这里制…