使用循环 inC 进行字符输入?

character inputs with loop inC?

int main(){
    char students[20][20]={
        "Ehtisham Hassan",
        "Arbab Mushtaq",
        "M Yaseen Ayub",
        "Qamar Farooq",
        "Muhammad Muneeb"
    };
    char isPresent;

    for(int b=0; b<5; b++){

         printf("%s\n",students[b]);
         scanf("%c\n",&isPresent);

    }

    return 0;
}

我想让我的代码做的是从学生数组中打印一个学生的名字,然后等待用户输入一个字符,但它所做的是打印一个学生的名字,然后存储一个字符然后当循环第二次运行时,它会打印两个学生的名字,然后等待 char 输入。谁能告诉我为什么会这样?

这是我的程序的输出:

Ehtisham Hassan
a
Arbab Mushtaq
M Yaseen Ayub
a
Qamar Farooq
Muhammad Muneeb
a

预期输出:

Ehtisham Hassan
a
Arbab Mushtaq
a
M Yaseen Ayub
a
Qamar Farooq
a
Muhammad Muneeb
a

使用

scanf(" %c",&isPresent);
      ^^
      white space and removed '\n`

而不是

scanf("%c\n",&isPresent);

参考这个FAQ问题。