while循环工作不正常/意外?

时间:2016-02-24 05:43:08

标签: c

所以我有这段代码:

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

这里有一个我不知道的挑剔的东西吗?

2 个答案:

答案 0 :(得分:1)

更改

scanf ("%c", &c);

scanf (" %c", &c);

正如@haris所提到的,该空间用于消耗由前一个\n引起的输入缓冲区中剩余的scanf(换行符)。

另见:What does space in scanf mean?

答案 1 :(得分:0)

以下代码应该可以正常工作。 scanf等待新行的输入。由于您没有返回到新行,因此它正在读取当前行中已存在的空格字符。

 char inputs[10] = "";
    int numInputs = 0;
    char c;
    while (numInputs < 10){
        printf("Enter char %i: ",numInputs);
        scanf("%c\n",&c);
        numInputs++;
    }