我当时正在读K&R书,想以我从未尝试过的方式测试printf()和putchar()函数。我遇到了一些意想不到的事件,我想听听更有经验的程序员为什么会发生这种情况。
char c;
while((c = getchar()) != EOF) {
//put char(c);
printf("%d your character was.\n", c);
}谢谢。
发布于 2013-06-24 10:20:15
putchar需要一个字符,而不是一个字符串,如果您想给它一个字符串,它会打印字符串地址的一部分编辑-关于2的更多细节
您需要一个int,因为getchar既可以返回值-1 (0x00FF)的字符,也可以返回值-1的整数(0xFFFF),所以它们的含义不同: value -1的字符是有效字符(例如,它在拉丁文-1中),而值-1的整数在这个上下文中是EOF。
下面是一个简单的程序,它显示了不同之处:
#include <stdio.h>
int main(int argc, char ** argv) {
{
char c = 0xFF; /* this is a valid char */
if (c == EOF) printf("wrong end of file detection\n");
}
{
int c = 0xFF; /* this is a valid char */
if (c == EOF) printf("wrong end of file detection\n");
}
}第一个测试成功是因为0xFF == -1用于char,而第二个测试失败是因为0x00FF != -1用于int。
我希望这能让事情更清楚一些。
发布于 2013-06-24 13:24:17
https://stackoverflow.com/questions/17272977
复制相似问题