首页 > 解决方案 > C - 在将代码块移动到不同的函数并可能以某种方式破坏循环后,Printf 将编译但不打印任何内容

问题描述

我正在尝试将这段仅打印一些行的代码块移动到一个单独的函数中,但每次我这样做时都不会打印任何内容。这完全符合我的要求:

    {
         ReadFile(PayrollRead, *FirstName[i], *LastName[i], HourlyRate[i], TotalHours[i],
         DefEarn[i]);
         ControlCalc(HourlyRate[i], TotalHours[i], DefEarn[i], GrossPay[i],
                     FedTax[i], StateTax[i], SsiTax[i], RegHours[i], OvtHours[i],
                     NetPay[i]);                
        printf("%-9s,%-9s%5.2lf%10.2lf%11.2lf%10.2lf%9.2lf%10.2lf\n",LastName[i], 
            FirstName[i],HourlyRate[i], RegHours[i], GrossPay[i], FedTax[i], SsiTax[i], NetPay[i]);
        printf("%34.2lf%21.2lf%9.2lf", OvtHours[i], StateTax[i], DefEarn[i]);
        printf("\n\n");
         i++;
         j++;
    }while (i<5);

但是每次我把它改成这个,它就不会打印任何东西,崩溃并退出。

o
    {    ReadFile(PayrollRead, *FirstName[i], *LastName[i], HourlyRate[i], TotalHours[i],
         DefEarn[i]);
         ControlCalc(HourlyRate[i], TotalHours[i], DefEarn[i], GrossPay[i],
                     FedTax[i], StateTax[i], SsiTax[i], RegHours[i], OvtHours[i],
                     NetPay[i]);                
         PrintResults(*LastName[i], *FirstName[i], HourlyRate[i], RegHours[i],
                      GrossPay[i], FedTax[i], SsiTax[i], NetPay[i], 
                      OvtHours[i], StateTax[i], DefEarn[i]);
         i++;
         j++;
    }while (i<5);
.
.
.
void PrintResults(char LastName, char FirstName, double HourlyRate, double RegHours,
                  double GrossPay, double FedTax, double SsiTax, double NetPay,
                  double OvtHours, double StateTax, double DefEarn)
{
        
        printf("%-9s,%-9s%5.2lf%10.2lf%11.2lf%10.2lf%9.2lf%10.2lf\n",LastName, 
        FirstName,HourlyRate, RegHours, GrossPay, FedTax, SsiTax, NetPay);
        printf("%34.2lf%21.2lf%9.2lf", OvtHours, StateTax, DefEarn);
        printf("\n\n");            
}

如果我添加一条语句以在 PrintResults 中打印一些随机消息,它实际上会打印它,但只会打印一次。

非常感谢你的帮助!

标签: c

解决方案


格式是字符串,但给定的参数是字符。

修复打印字符串:

Do-while 块

PrintResults(LastName[i], FirstName[i], HourlyRate[i], RegHours[i],
    GrossPay[i], FedTax[i], SsiTax[i], NetPay[i], 
    OvtHours[i], StateTax[i], DefEarn[i]);

打印结果签名

void PrintResults(char* LastName, char* FirstName, double HourlyRate, double RegHours,
                  double GrossPay, double FedTax, double SsiTax, double NetPay,
                  double OvtHours, double StateTax, double DefEarn)

推荐阅读