为什么在第二个循环中不进行for循环打印?

时间:2019-08-17 23:33:55

标签: c arrays string for-loop stdin

我创建了一个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”之后,必须在代码再次显示“名称:”提示之前输入第二个名称“约翰”。因此,控制台中的文本最终看起来像这样:

Name: Ahmed
John
Name: Bob

名称是用户输入的名称。预先谢谢你。

1 个答案:

答案 0 :(得分:6)

我认为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使用了输入中的尾随换行符,而不是前导换行符。