【发布时间】:2022-01-07 00:27:32
【问题描述】:
#include <stdio.h>
int main() {
for (int i = 0; i < 10; i++) {
printf("0");
char a[0];
scanf("%c", a);
}
}
我编写了这段代码,对于输入中的每个字符,它都会循环额外的时间而无需再次扫描。所以 bash 显示:
0 [我输入'1',然后:]
0011
000111
0000
然后循环终止。就像它将字符保存在 scanf 缓冲区中并在每个循环中一一删除,重新读取它们。但是为什么呢?
【问题讨论】:
-
您认为
char a[0];保留了多少内存(即使编译器允许)?接下来,您认为来自scanf("%c", a);的输入将存储在哪里? -
请学习使用空格和(尤其是)缩进来提高代码的可读性。这次我帮你了。
-
想一想:当你“输入'1'”时,你的确切按键是什么?