一个关于C中fgets函数的问题
while(fgets(line,BUF,fp)!=NULL)是怎么执行循环的?我说下我的理解,fgets()函数把大小为BUF的数据从文件读入字符串中,这里是成块读取,...
while(fgets(line,BUF,fp)!=NULL)是怎么执行循环的?我说下我的理解,fgets()函数把大小为BUF的数据从文件读入字符串中,这里是成块读取,而不是单个读取的,不足BUF的按行读取,每读取一行或达到BUF就执行一次循环,最后直至EOF,是这样吗?忘高人指点下,拜谢
展开
1个回答
展开全部
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,此时循环退出。
因此你的理解也就只是考虑掉了一种发生错误的情况,希望我的回答对你有所帮助。
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,此时循环退出。
因此你的理解也就只是考虑掉了一种发生错误的情况,希望我的回答对你有所帮助。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询