【问题标题】:How to use multiple Char Arrays and Float Arrays in a For Loop?如何在 For 循环中使用多个字符数组和浮点数组?
【发布时间】:2019-07-13 23:16:31
【问题描述】:

在第一个循环之后,迭代忽略“员工姓名#:”并跳转到“员工的小时费率:”和“工作时间:”循环的其余部分,直到它完成。在“For Loop”中添加“Float”数组后问题就开始了。

这是我得到的输出:

员工 1 的姓名:Alex 员工时薪:9.00 工作时间:8

员工 2 的姓名:员工的时薪:9.50 工作时间:8

员工 3 的姓名:员工的时薪:10.00 工作时间:8

等等……

    #include <stdio.h>

    int main()
    {   int i;
        char empNames[5][32];
        float empRates[5][10];
        float empHours[5][10];

        for (i = 0; i < 5; i++)
        {
            printf("Name of employee %d: ", i+1);
            gets(empNames[i]);

            printf("Employee's hourly rate: ");
            scanf_s("%f", &empRates);//squiggly green line

            printf("Hours Worked: ");
            scanf_s("%f", &empHours);//squiggly green line
        }
      }

错误: - 警告 C4477 'scanf_s':格式字符串 '%f' 需要类型为“float ”的参数,但可变参数 1 的类型为“float ()[5][10]”。

-警告 C6272 当调用“scanf_s”时需要浮点时,非浮点作为参数“2”传递实际类型:“浮点 [5][10]”。

-警告 C4013 'gets' 未定义;假设 extern 返回 int。

【问题讨论】:

    标签: c arrays loops for-loop floating-point


    【解决方案1】:

    首先:gets 使用起来很危险,你可以使用 fgets 来查看更多信息:Why is the gets function so dangerous that it should not be used?

    第二:empRate[5][10] 是一个二维数组(矩阵),您只需要一个一维数组来保存您的浮点数,每个浮点数都可以放入 empRate[i](与 empHours 相同)

    #include <stdio.h>
    
    int main()
    {  
    int i;
    char empNames[5][32];
    float empRates[5];
    float empHours[5];
    
    for (i = 0; i < 5; i++)
    {
        printf("Name of employee %d: ", i+1);
        scanf("%32[^\n]s",empNames[i]);
        printf("Employee's hourly rate: ");
        scanf("%f", &empRates[i]);
    
        printf("Hours Worked: ");
        scanf("%f", &empHours[i]);
        fgetc(stdin); // clear the buffer from the new line character
        }
     }
    

    【讨论】:

    • @spinkoo- 谢谢你的帮助!至于第一行,我改用“scanf_s”,它修复了问题/错误。 printf("员工姓名:"); scanf_s("%s", &empNames[i], 32);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-14
    • 2013-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 2012-05-25
    相关资源
    最近更新 更多