EOF的解释

EOF 是End Of File 的缩写。 
在C 语言中,它是在标准库中定义的一个宏。 

人们经常误认为EOF 是从文件中读取的一个字符( 牢记)。

其实,EOF 不是一个字符, 它被定义为是int 类型的一个负数(比如 -1), EOF 也不是文件中实际存在的内容。
EOF 表示,读文件到了结尾(这一状态,这种状态可以用feof() 来检测)或 I/O 操作中的读、写错误(通常可以用ferror() 来检测)以及其它一些关联操作的错误状态。
 

// 当输入缓冲区有数据可读时,一次从输入缓冲区读取一个字节
getchar // 如果读到文件末,返回EOF. 

#include <stdio.h>

int main(void) 
{
    char c;
    while((c=getchar())!=EOF)
    {
        putchar(c);
        printf("  run to here\n");
    }
    return 0; 
}

 

运行结果如下,

1234
1  run to here
2  run to here
3  run to here
4  run to here

  run to here

可知,getchar会一直阻塞,直到 '本次输入结束(如,行回车)' 或 '结束输入(文件结束)'(即,输入缓冲区有数据可读)。
'本次输入结束' 或 '结束输入' 时,getchar的内部 文件IO读函数 才会读取标准输入的所有数据到输入缓冲区。

之后,getchar会逐一读取缓冲区数据,直至全部读完。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值