C-For循环在第一次迭代后提前结束
我在c类作业中遇到了一个问题,我会询问一个人的名字和姓氏以及他们的薪水。在大多数情况下,循环在请求名称时工作,正如我已经测试过的,当用户输入50个名称或直到用户输入一个空行时,循环将结束。问题来自于工资输入的时间。输入薪资编号后,循环就结束了。当它应该继续的时候,它停止,直到我达到休息或满足条件 代码如下:C-For循环在第一次迭代后提前结束,c,multidimensional-array,C,Multidimensional Array,我在c类作业中遇到了一个问题,我会询问一个人的名字和姓氏以及他们的薪水。在大多数情况下,循环在请求名称时工作,正如我已经测试过的,当用户输入50个名称或直到用户输入一个空行时,循环将结束。问题来自于工资输入的时间。输入薪资编号后,循环就结束了。当它应该继续的时候,它停止,直到我达到休息或满足条件 代码如下: for (i = 0; i < 50; ++i) { printf("Enter employees first name.\n "); gets(charFirstN
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++;
}
}
(i=0;i<50;++i)的
{
printf(“输入员工的名字。\n”);
获取(charFirstName[i]);
如果(charFirstName[i][0]='\0')
{
打破
}
其他的
{
printf(“输入员工姓氏。\n”);
获取(charLastName[i]);
printf(“输入员工工资。\n”);
scanf(“%d”、&i]);
intArrayCount++;
}
}
要求工资的部分就是问题所在。我知道它遗漏了一些东西,但我不完全确定是什么。我确实知道,仅仅通过尝试它自己,它不会正常运行。有谁能给我一些帮助和/或建议,告诉我如何解决这个问题,并添加缺少的部分。当你在输入薪水后按“回车”键时,“回车”键输入被视为输入,并被转入charFirstName
解决这一问题的一种方法如下:
char garbage[50];
在scanf()之后添加新行
垃圾变量将捕获“回车”键盘输入。
现在您可以进行下一次输入了。
scanf(“%d”,&intpalaries[i])代码>-->scanf(“%d%*c”和[i])代码>:%*c
用于使用换行符。不鼓励使用get
。您可以采用@bluepixy的格式说明符。
scanf("%d", &intSalaries[i]);
gets(garbage);