标签:
EOF(End Of File)表示在系统中没有更多的数据可从文件或流中读取的情况。通常人们会在文件尾插入一个他们选择的EOF字符,以此为信号表示文件已结束。
在UNIX中,由击键转换为EOF的解释由终端驱动来进行,因此程序不需将终端和其他输入文件区分开。默认情况下,驱动将在一行开始处的ctrl+d字符解释为EOF。若要插入一个ctrl+d字符(ASCII 04),则需要先输入ctrl+v,然后再输入ctrl+d。
1 get = getchar(); 2 put = putchar(get); 3 4 /* 若输入ctrl+d,get的值为-1, put的值为255 5 若输入ctrl+v和ctrl+d,get和put的值均为4 */ 6 printf("get = %d, put = %d", get, put);
在C标准库中,例如getchar函数,它必须要能区分文件中的有效数据和结束符。C语言使用的策略是在无输入时,getchar返回会返回一个值等于符号值(宏)EOF的数来表示已到文件尾。EOF的值通常由系统决定(在glibc中为-1),但它不等于任何有效的字符值。
程序调用getchar时,等待用户在终端输入,输入的字符被放入键盘缓冲区内,直到用户输入回车(回车字符也放在缓冲区内)或ctrl+d(向终端发出一个信号EOF,表示此行已结束)为止。然后将键盘输入作为一个标准输入流(stdin)交给getchar处理。
第一次调用getchar,将从stdin流中读取第一个字符,并将字符的ASCII返回给程序。第二次调用时,将读取第二个字符,以此类推,直至遇到回车或EOF为止。遇到回车将返回换行符(\n),遇到EOF则返回EOF表示文件结束。当遇到错误时,也会返回EOF。此时需要用ferror函数来判断EOF是表示文件结束还是错误。
标签:
原文地址:http://www.cnblogs.com/0xhao/p/5136657.html