你用什么来结束程序,-1,不起作用:
#include <stdio.h>
//copy input to output
main() {
char c;
c = getchar();
while(c != EOF) {
putchar(c);
c = getchar();
}
}
Run Code Online (Sandbox Code Playgroud)
该文档getchar是它返回下一个可用的字符,强制转换为a unsigned char然后以int返回值返回.
这样做的原因是为了确保所有有效字符都作为正值返回,并且不会比较等于EOF一个评估为负整数值的宏.
如果你将返回值getchar放入a char,那么根据你的实现char是签名还是未签名,你可能会得到虚假检测EOF,或者你EOF甚至可能永远都不会检测到.
EOF当从文件或管道进程重定向程序的输入时,通常会自动发送到C库的信号.交互式地取决于您的终端和shell,但通常在unix上使用Ctrl-D和单独的Windows Ctrl-Z实现.