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

标签 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++;

    }
}

要求工资的部分就是问题所在。我知道其中缺少一些东西,但我不完全确定是什么。我通过尝试知道它本身无法正常运行。任何人都可以给我一些关于如何解决问题并添加缺少的部分的帮助和/或建议。

最佳答案

当您在输入工资后按“Enter”键盘时,“Enter”键盘输入将被视为输入,并将被转移到 charFirstName。

解决这个问题的一种方法如下:

char garbage[50];

在scanf()之后添加新行

scanf("%d", &intSalaries[i]);
gets(garbage);

垃圾变量将捕获“Enter”键盘输入。 现在您可以进行下一步输入了。

关于C - For 循环在第一次迭代后提前结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43691254/

相关文章:

c - 如何编写单元测试以确保 C 中科学计算中的数值准确性?

c++ - 巨大的 vector "hangs"程序? (50000 x 50000 个细胞)

java - 按二维对二维数组进行排序

php - 将多维php数组插入mysql数据库

javascript - 将数组合并到一个基础中

python - 指针和 "Storing unsafe C derivative of temporary Python reference"

c - 如何从C程序向Linux命令发送命令

c - 在系统调用之前 fork 进程执行(执行点)

c - C中头文件中带有struct参数的函数声明

java - 在java中使用列表的列表