我试图在条件循环的条件或测试中使用符号常量。下面是我的尝试:
#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
的一部分。