为什么我的 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
从其输入中消耗尾随换行符,而不是前导换行符。
我创建了一个 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
从其输入中消耗尾随换行符,而不是前导换行符。