我正在用 C 测试一个简单的程序:
int main() {
int c;
c = getchar();
while ( c != EOF ) {
printf("%c\n", c);
c = getchar();
}
}
但是,当我提供简单的输入,如“a”、“b”时,它会打印出“a\n\n, b\n\n”...有人可以解释一下吗?谢谢!
☛ gcc hello.c; ./a.out
a
a
b
b
c
c
最佳答案
因为它获取 EOL 字符以及您键入的字符。
您的输入不是“a”、“b”,而是“a\nb\nc\n”,并且您的脚本配置为(基本上)在每个字符后输出一个新行。
所以第一次通过循环时,它获取 'a' 并打印 'a\n',然后它获取 '\n' 并打印 '\n\n'。然后是 'b' 和 'b\n' 等。
试穿这个尺寸:
int main() {
int size = 500;
char buff[size];
char* check;
int read;
check = fgets(buff, sizeof(buff), stdin);
while ( check != NULL ) {
printf("%s", buff);
check = fgets(buff, sizeof(buff), stdin);
}
}
关于C: 简单复制输入 (getchar) 到输出 (printf) 返回额外的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21947541/