From C 编程语言:
int c;
while ((c = getchar()) != EOF)
putchar(c);
“……解决办法是getchar
当没有更多输入时,返回一个独特的值,该值不能与任何真实字符混淆。这个值称为EOF
,表示“文件结束”。我们必须声明c
是一个足够大的类型来保存任何值getchar
返回。我们不能使用char
since c
必须足够大才能容纳EOF
除了任何可能的char
."
我签到了stdio.h
并在我的系统上打印 EOF 的值,并将其设置为-1
。在我的系统上,chars
已签名,尽管我知道这是依赖于系统的。所以,EOF
可以安装在char
对于我的系统。我通过定义重写了上面的小例程c
成为一个char
并且程序按预期运行。 ASCII字符表中还有一个字符here http://www.asciitable.com/似乎有一个对应于 255 的空白字符,其作用类似于EOF
.
那么,为什么 ASCII 有一个指定为 EOF 的字符(255)呢?这似乎与文中所说的相矛盾C 编程语言 book.
When getchar()
读取字节255,返回255。当getchar()
发现没有更多的输入,则返回-1。
如果将结果存储在char
,你无法区分这两者。但是当你将它们存储在int
, 你可以。 (该声明独立于char
).
仅当你know结果是有效的,你可以将其转换为char
并获得通常的 C 风格字符类型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)