1

我希望这对于堆栈溢出来说不是太基本的问题。但是我有一个查询,它试图确定数组中的成绩数量,然后要求用户输入每个成绩。它看起来像这样:

#include <stdio.h>


int main (void)
{
int size;

printf ("Enter The Amount Of Grades In Your Array: ");
scanf("%i", &size);/*Stores Amount Of Grades In The Array*/

char myGrades[size];
int i;

for (i = 0; i < size; ++i)
  {
  printf ("Enter the grade:");
  scanf ("%c",&myGrades[i]);
  }

return 0; 
}

我希望 int i 之后的第一行可以读取"Enter The Grade:",但它看起来像"Enter The Grade:""Enter The Grade:"

我不明白为什么它说第二次输入成绩而没有首先询问我在第一次“输入成绩”时的输入。我们欢迎所有的建议!

4

1 回答 1

5

你的第一个scanf是留下\n后面,然后在下次自动读取它,就好像你按下了回车一样(所以换行符存储在你的数组中)。你可以通过使用" %c"来解决这个问题。该空格将消除您想要的字符之前的任何换行符或空格。

于 2013-03-08T02:24:28.837 回答