一个关于C中fgets函数的问题

while(fgets(line,BUF,fp)!=NULL)是怎么执行循环的?我说下我的理解,fgets()函数把大小为BUF的数据从文件读入字符串中,这里是成块读取,... while(fgets(line,BUF,fp)!=NULL)是怎么执行循环的?我说下我的理解,fgets()函数把大小为BUF的数据从文件读入字符串中,这里是成块读取,而不是单个读取的,不足BUF的按行读取,每读取一行或达到BUF就执行一次循环,最后直至EOF,是这样吗?忘高人指点下,拜谢 展开
 我来答
dufenglei908
推荐于2016-05-28 · TA获得超过6372个赞
知道大有可为答主
回答量:1449
采纳率:60%
帮助的人:769万
展开全部
fgets原型定义如下
char *fgets(char *str, int size, FILE * stream);

我们看这句话:while(fgets(line,BUF,fp)!=NULL)
你理解的差不多,这个循环,每次从fp中读取最大长度为BUF的数据到line中去。在读取过程中,发生以下三种情况时,读取停止:
1. 发现换行符
2. 发现文件终结符EOF
3. 发生错误
而这个函数在什么情况下会返回NULL呢,就是上述的第2和第3种情况发生时,会返回NULL,此时循环退出。

因此你的理解也就只是考虑掉了一种发生错误的情况,希望我的回答对你有所帮助。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式