(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型的数。使用时也应该注意这一点。