我创建了一个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
名称是用户输入的名称。预先谢谢你。
答案 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
使用了输入中的尾随换行符,而不是前导换行符。