我对K&R中提到的使用的程序感到困惑getchar()。它提供与输入字符串相同的输出:#include <stdio.h>main(){ int c; c = getchar(); while(c != EOF){ putchar(c); c = getchar(); }}为什么要打印整个字符串?我希望它读取一个字符,然后再次要求输入。而且,我们输入的所有字符串都以EOF结尾吗?
3 回答
子衿沉夜
TA贡献1828条经验 获得超3个赞
在您可能使用的简单设置中,它getchar
与缓冲输入配合使用,因此必须先按Enter键,然后getchar才能读取任何内容。字符串不以EOF
; 结尾。实际上,EOF
它实际上不是字符,而是指示文件结尾的不可思议的值。但EOF
不是读取的字符串的一部分。getchar
当没有什么可阅读的东西时,它就是返回的东西。
梦里花落0921
TA贡献1772条经验 获得超6个赞
根据C定义,字符串以终止'\0'。您"C strings"的程序中没有任何内容。
您的程序从标准输入(键盘)读取字符(缓冲到ENTER),并将它们写回到标准输出(屏幕)。无论您键入多少个字符或执行此操作多长时间,它都会执行此操作。
要停止该程序,您必须指示标准输入没有更多数据(呵呵,键盘怎么也没有更多数据?)。
您只需键入Ctrl+D(Unix)或Ctrl+Z(Windows)即可假装文件已到达末尾。
Ctrl+D(或Ctrl+Z)并不是真正C意义上的字符。
如果您使用输入重定向来运行程序,则EOF是文件的实际结尾,而不是使人信服的
./a.out < source.c
- 3 回答
- 0 关注
- 520 浏览
添加回答
举报
0/150
提交
取消