gets与scanf如何判断读取文件结束

2022-08-20 社会 256阅读
gets与scanf判断读取文件结束
(1) void * =====NULL

(2)int =======EOF=======0
当出错或到文件末尾时:
scanf() 返回int,故与EOF匹配
gets() 返回char * ,故与NULL匹配
两个例子:
(1)
#include
void main()
{
char a[20];
int i=0;

freopen("input.txt","r",stdin);
while(scanf("%s",a)!=EOF) printf("%s",a);

}
#include
void main()
{
char a[20];
int i=0;

freopen("input.txt","r",stdin);
while(gets(a)!=NULL) puts(a);

}
补充:(1)关于' ' ,'\0' ,NULL ,EOF,空格(ascii码为32) 的区别 :
' '和空格 等价
'\0' 是ascii码为0的字符,即为空字符
至于 NULL和EOF要依情况而定了。
(2)
scanf()函数返回成功赋值的数据项数,出错时则返回EOF

gets()用于从标准输入流stdin读入一个整行(以'\n'或EOF)结束,写入ptr指向的字符数组,并返回这
个指针;出错或遇到文件结束时则返回NULL。行末的'\n'从流中取出,但不写入数组。gets()不检查被写
入的数组大小。
getchar()用于从标准输入流stdin读入一个字符,并返回这个字符。如果读到文件结尾,则返回EOF。注
意到EOF不能用char类型表示,所以getchar()函数返回的是一个int型的数。使用时也应该注意这一点。
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com