我在 c 作业中遇到问题,我会询问一个人的名字和姓氏及其工资。在大多数情况下,循环在询问名称时有效,正如我所测试的那样,当用户输入 50 个名称或直到用户输入空行时,循环将结束。问题出在工资投入的时候。当输入工资数字时,循环就结束。当它应该继续时它会停止,直到我达到中断或满足条件。
这是代码:
for (i = 0; i < 50; ++i)
{
printf("Enter employees first name.\n ");
gets(charFirstName[i]);
if (charFirstName[i][0] == '\0')
{
break;
}
else
{
printf("Enter employees last name.\n ");
gets(charLastName[i]);
printf("Enter employees salary.\n ");
scanf("%d", &intSalaries[i]);
intArrayCount++;
}
}
要求工资的部分就是问题所在。我知道其中缺少一些东西,但我不完全确定是什么。我通过尝试知道它本身无法正常运行。任何人都可以给我一些关于如何解决问题并添加缺少的部分的帮助和/或建议。
最佳答案
当您在输入工资后按“Enter”键盘时,“Enter”键盘输入将被视为输入,并将被转移到 charFirstName。
解决这个问题的一种方法如下:
char garbage[50];
在scanf()之后添加新行
scanf("%d", &intSalaries[i]);
gets(garbage);
垃圾变量将捕获“Enter”键盘输入。 现在您可以进行下一步输入了。
关于C - For 循环在第一次迭代后提前结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43691254/