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

时间:2017-04-29 02:35:32

标签: c multidimensional-array

我遇到了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++;

    }
}

要求工资的部分是问题所在。我知道它有一些缺失,但我不完全确定是什么。我知道只是从它自己尝试它,它不会正常运行。任何人都可以给我一些帮助和/或建议,如何解决问题,并在缺少的部分添加。

1 个答案:

答案 0 :(得分:0)

输入工资后点击“Enter”键盘时,“Enter”键盘输入被视为输入,并被转移到charFirstName。

摆脱这种情况的一种方法如下:

char garbage[50];

在scanf()

之后添加一个新行
scanf("%d", &intSalaries[i]);
gets(garbage);

垃圾变量将捕获“输入”键盘输入。 现在你清楚接下来的输入了。

相关问题