Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C-For循环在第一次迭代后提前结束_C_Multidimensional Array - Fatal编程技术网

C-For循环在第一次迭代后提前结束

C-For循环在第一次迭代后提前结束,c,multidimensional-array,C,Multidimensional Array,我在c类作业中遇到了一个问题,我会询问一个人的名字和姓氏以及他们的薪水。在大多数情况下,循环在请求名称时工作,正如我已经测试过的,当用户输入50个名称或直到用户输入一个空行时,循环将结束。问题来自于工资输入的时间。输入薪资编号后,循环就结束了。当它应该继续的时候,它停止,直到我达到休息或满足条件 代码如下: for (i = 0; i < 50; ++i) { printf("Enter employees first name.\n "); gets(charFirstN

我在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++;

    }
}
(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);