所以我有这段代码:
char inputs[10] = "";
int numInputs = 0;
while (numInputs < 10){
char c;
printf("Enter char %i: ",numInputs);
scanf("%c",&c);
numInputs++;
}
我只是试图用用户输入的10个char值填充数组。当我运行它时,它只允许我输入其他循环(?)的输入。这就是控制台的样子 -
Enter char 0: c
Enter char 1: Enter char 2: r
Enter char 3: Enter char 4: r
Enter char 5: Enter char 6: r
Enter char 7: Enter char 8: r
Enter char 9: Program ended with exit code: 0
这里有一个我不知道的挑剔的东西吗?
答案 0 :(得分:1)
更改
scanf ("%c", &c);
到
scanf (" %c", &c);
正如@haris所提到的,该空间用于消耗由前一个\n
引起的输入缓冲区中剩余的scanf
(换行符)。
答案 1 :(得分:0)
以下代码应该可以正常工作。 scanf等待新行的输入。由于您没有返回到新行,因此它正在读取当前行中已存在的空格字符。
char inputs[10] = "";
int numInputs = 0;
char c;
while (numInputs < 10){
printf("Enter char %i: ",numInputs);
scanf("%c\n",&c);
numInputs++;
}