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

来源:互联网 发布:网络信息发布审核制度 编辑:程序博客网 时间:2024/05/16 01:14

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

(1) void * =====NULL


(2)int =======EOF=======0

当出错或到文件末尾时:

scanf() 返回int,故与EOF匹配
gets() 返回char * ,故与NULL匹配

两个例子:
(1) 
#include<stdio.h>
void main()
{
char a[20];
int i=0;

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

#include<stdio.h>
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型的数。使用时也应该注意这一点。

0 0