C 中的条件循环如何读取"Symbolic Constants in C "?



我试图在条件循环的条件或测试中使用符号常量。下面是我的尝试:

#include <stdio.h>
#define TEST 0
void main() {
int c;
while ((c = getchar()) != TEST)
putchar(c);
}

当我输入0作为输入时,我想退出程序。但是它一直复制我的输入,即使我输入一个0
你们能帮我理解为什么会发生这种情况吗?

如果您希望在输入0时程序停止,您应该将getchar()的返回值与字符常量'0'而不是数字0进行比较。注意,您还应该检查EOF,以避免在文件末尾出现无限循环:

#include <stdio.h>
#define TEST '0'
int main() {
int c;
while ((c = getchar()) != EOF && c != TEST)
putchar(c);
return 0;
}

但是请注意,如果程序从终端读取,因为输入被标准流和终端都缓冲了,'0'字节将被程序使用,直到你按下回车键。

还要注意,程序将存储第一个0字节,即使这个字节是数字1024或字Hell0的一部分。

最新更新