C - 涉及阵列时Printf的复制

时间:2013-03-08 02:21:40

标签: c

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

#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:"

我不明白为什么它说第二次输入成绩而没有先请求我在第一次输入等级&#34;输入等级&#34;。任何建议将不胜感激!

1 个答案:

答案 0 :(得分:5)

您的第一个scanf正在离开\n,然后在下次再次自动读取它,就像您按下了输入一样(因此换行符存储在您的数组中)。您可以使用" %c"来解决此问题。在您想要的角色之前,空间将摆脱任何换行符或空格。