我遇到了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++;
}
}
要求工资的部分是问题所在。我知道它有一些缺失,但我不完全确定是什么。我知道只是从它自己尝试它,它不会正常运行。任何人都可以给我一些帮助和/或建议,如何解决问题,并在缺少的部分添加。
答案 0 :(得分:0)
输入工资后点击“Enter”键盘时,“Enter”键盘输入被视为输入,并被转移到charFirstName。
摆脱这种情况的一种方法如下:
char garbage[50];
在scanf()
之后添加一个新行scanf("%d", &intSalaries[i]);
gets(garbage);
垃圾变量将捕获“输入”键盘输入。 现在你清楚接下来的输入了。