C - 涉及阵列时Printf的复制

Ame*_*ico 1 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; 
}
Run Code Online (Sandbox Code Playgroud)

我期待int i之后的第一行读取,"Enter The Grade:"但它看起来像"Enter The Grade:""Enter The Grade:"

我不明白为什么它说第二次进入等级而没有先要求我在第一次"进入等级"时输入.我们欢迎所有的建议!

tep*_*pic 5

你的第一个scanf是离开\n后面,然后在下次再次自动读取它,好像你按下了enter(所以换行符存储在你的数组中).您可以通过使用" %c"来解决这个问题.在您想要的角色之前,空间将摆脱任何换行符或空格.