C语言Ctrl+z是EOF么?

C语言Ctrl+z是EOF么?,第1张

C语言中,EOF即文档结尾但是,当你写一个小程序,并以EOF作为判断条件时,就无法输入文档的结尾了,只能人工输入一个,这个人工输入的文档结尾就是Ctrl+Z
比如:
#include <stdioh>
int main()
{
int c;
do
{
printf("请输入文档的结尾标志");
}while((c=getchar())!=EOF);
printf("已得到文档结束标志");
return 0;
}
当程序运行的时候,没有文档结尾,只能找一个命令来替代文档结尾,那就是Ctrl+z
如上面的一段程序,当你输入Ctrl+z的时候,程序提示已得到文档结束标志

现代PC的键盘产生按键扫描码,然后交给 *** 作系统等软件来解释按键的意义。控制字符的输入是平台相关的。一般回车产生回车符('\r')(少数情况下产生换行符'\n'),在Windows控制台中被解释为'\n'(也就是说按回车就输入了'\n');也可以使用Ctrl+M。其它控制字符可以用Ctrl+非控制字符对应的按键产生。例如Ctrl+Z,输入一个EOF(文件结束符)。至于NUL('\0'),据我所知,在Windows控制台下是没有直接输入的方法的。如果不是控制台程序,Windows下利用Alt+小键盘数字键可以输入Unicode字符(在0~127和ASCII兼容),不过效果直接看是看不出来的。
====
[原创回答团]

eof
是个宏,其意思是:end
of
file,文件尾标志。
从数值上来看,就是整数-1
在c语言的头文件中对其进行了宏定义:
libioh: # define eof (-1)当读文件 *** 作时,遇到文件结束位置或读数据出错均会返回
eof。
(c语言中所有的输入输出 *** 作均是按读文件的思想来设计的,或者说,是文件 *** 作的一种特例,如getchar()就是fgetc(stdin)
的一个宏

int getchar() ; //从标准输入缓冲区读取一个字符,成功返回该字符的ascii值,出错,返回eof那么,如何在键盘输入时,产生eof呢?
不同的系统方法不同:
linux系统下,在输入回车换行后的空行位置,按
ctrl+d
(先按ctrl键,不放,再按d键)
windows系统下,在输入回车换行后的空行位置,按
ctrl+z,再回车确认
以下代码供参考:
#include
void main()
{
int ch;
do {
ch=getchar();
printf("ch=%d\n", ch ); //输出读返回的ch值,读到eof会输出-1
} while ( ch!=eof );
}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13397281.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-28
下一篇 2023-07-28

发表评论

登录后才能评论

评论列表(0条)

保存