C-涉及阵列时的Printf复制

C-涉及阵列时的Printf复制,c,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

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

#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; 
}
#包括
内部主(空)
{
整数大小;
printf(“在数组中输入分数:”);
scanf(“%i”,&size);/*存储数组中的等级数量*/
煤焦等级[尺寸];
int i;
对于(i=0;i
我希望int I后面的第一行读作“输入成绩:”,但它看起来像是“输入成绩:”


我不明白为什么它说第二次进入年级,而没有在第一次“进入年级”时先征求我的意见。任何建议都将不胜感激

您的第一个
scanf
\n
留在后面,然后在下次自动再次读取它,就像您按下enter键一样(因此换行符存储在数组中)。您可以使用
“%c”
来解决这个问题。空格将删除所需字符之前的任何换行符或空格。

您的第一个
scanf
\n
留在后面,然后在下次自动读取它,就像您按下enter键一样(因此换行符存储在数组中)。您可以使用
“%c”
来解决这个问题。空格将删除所需字符前的任何换行符或空格。

与您的问题无关,但您应该检查
大小
是否具有合理的值。如果用户输入了一个大数字,程序将崩溃。与您的问题无关,但您应该检查
size
是否具有合理的值。如果用户输入一个大数字,程序就会崩溃。