【问题标题】:stdio precision fprintstdio 精度 fprint
【发布时间】:2016-04-01 02:22:49
【问题描述】:

这是家庭作业。除了这 1 件,我已经完成了所有的编码。这是它应该是什么样子的一个例子。除了员工姓名

Employee's   Pay      RegHours    Gross    Fed      SSI     Net
Name         Rate     OvtHours    Worked   State    Defr
==========   =====    ========   =======  ======   ======   ======
Smith, Sam   25.00       40.00   1000.00  127.50   65.88    647.70
                          5.00              8.93  150.00

目前是这个样子。

   Employee's   Pay      RegHours    Gross    Fed      SSI     Net
   Name         Rate     OvtHours    Worked   State    Defr
   ==========   =====    ========   =======  ======   ======   ======
   Smith        25.00       40.00   1000.00  127.50   65.88    647.70
   Sam                       5.00              8.93  150.00

   Jordan       35.00       32.00   1120.00  149.25   77.11    758.19
   Michael                   0.00             10.45  125.00

   Totals:      60.00       72.00   2120.00  276.75  142.99   1405.89
                             5.00             19.37  275.00
   Averages:    30.00       36.00   1060.00  138.38   71.49    702.95
                             2.50              9.69  137.50

它特别说明:“员工的姓名必须按照上面的报告所示打印,并用逗号和空格分隔名字和姓氏。” 我无法将其正确放置到空间中。

我的格式是这样的:

#define HEADERLINE1 "       Employee's   Pay      RegHours    Gross    Fed      SSI     Net\n"
#define HEADERLINE2 "       Name         Rate     OvtHours    Worked   State    Defr\n"
#define HEADERLINE3 "       ==========   =====    ========   =======  ======   ======   ======\n"
#define REPLNEFORMT1 "       %-12.15s%6.2f%12.2f%10.2f%8.2f%8.2f%10.2f\n"//Main Header Line 1
#define REPLNEFORMT2 "       %-12s%18.2f%18.2f%8.2f\n\n"//Main Header Line 2
#define REPLNEFORMT3 "       %-11s%7.2f%12.2f%10.2f%8.2f%8.2f%10.2f\n"//Totals Line 1 
#define REPLNEFORMT4 "       %30.2f%18.2f%8.2f\n"//Totals Line 2    
#define REPLNEFORMT5 "       %-11s%7.2f%12.2f%10.2f%8.2f%8.2f%10.2f\n"//Averages Line 1 
#define REPLNEFORMT6 "       %30.2f%18.2f%8.2f\n"//Averages Line 2  

这就是我的打印方式:

fprintf(stdout,REPLNEFORMT1,ln,p,h<=40?h:40,g,fed,ssi,n);  
fprintf(stdout,REPLNEFORMT2,fn,ovt,state,d);
fprintf(reportfile,REPLNEFORMT1,ln,p,h<=40?h:40,g,fed,ssi,n);  
fprintf(reportfile,REPLNEFORMT2,fn,ovt,state,d);

ln = 姓氏,fn = 名字,p = 工资,h = 小时数,g = 总额,n = 净额。

我不能使用 iostream,因此 std 精度是不可能的。

【问题讨论】:

    标签: c syntax printf


    【解决方案1】:
    char result[50];
    
    strcpy(result, ln);
    strcat(result, ", ");
    strcat(result, fn);
    

    试试这个

    【讨论】:

      【解决方案2】:

      使用制表符排列列,而不是空格。

      【讨论】:

      • 如果任何数据项的宽度超过一个制表位(不一定是 8 列),这仍然会导致列未对齐。
      • 嗯,是的,但是您的列宽受到列标题的限制,因此您的数据项已经受到限制。另见msdn.microsoft.com/en-us/library/25366k66.aspx
      猜你喜欢
      • 2014-12-13
      • 2018-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-23
      相关资源
      最近更新 更多