为了账号安全,请及时绑定邮箱和手机立即绑定

getchar()如何工作?

getchar()如何工作?

C
GCT1015 2019-10-17 14:38:31
我对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当没有什么可阅读的东西时,它就是返回的东西。


查看完整回答
反对 回复 2019-10-17
?
梦里花落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


查看完整回答
反对 回复 2019-10-17
  • 3 回答
  • 0 关注
  • 520 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信