为什么我的 for 循环不在第二个循环中打印?

Why isn't my for-loop printing in the second loop?

我创建了一个 for 循环,将名称存储在一个数组中,用户可以选择它的大小,但是当 for 循环运行时,它会跳过第二个 printf 语句。

int NumToDelete;
printf("How much employees do you want to remove?\n");
scanf(" %d", &NumToDelete);
char Name[NumToDelete][25];
for(int i = 0; i < NumToDelete; i++)
{
    fgetc(stdin);      //To stop the program from doing
    printf("Name: ");  //something like this: Name:Name:
    fgets(Name[i], 25, stdin);
}

提示和用户输入应如下所示(如果 NumToDelete 为 3):

Name: Ahmed
Name: John
Name: Bob

但是,在我输入名字 "Ahmed" 之后,我必须输入第二个名字 "John",然后代码再次显示 "Name:" 提示。所以控制台中的文本最终看起来像这样:

Name: Ahmed
John
Name: Bob

用户输入的名称。提前谢谢你。

我认为 fgetc 应该在 for 循环之外。试试这个代码:

int NumToDelete;
printf("How much employees do you want to remove?\n");
scanf(" %d", &NumToDelete);
fgetc(stdin);
char Name[NumToDelete][25];
for(int i = 0; i < NumToDelete; i++)
{
    printf("Name: ");
    fgets(Name[i], 25, stdin);
}

原因是 fgets 从其输入中消耗尾随换行符,而不是前导换行符。