【问题标题】:Printing significant places of integers in C在 C 中打印整数的重要位置
【发布时间】:2012-12-06 18:02:19
【问题描述】:

我想尝试将输出中的列排列整齐,我想使用 %g 进行打印,并且它必须用逗号分隔,但我正在努力让它们对齐。

我目前正在打印所有双打:

fprintf(output, "|%-9.6g, |%-15.6g, |%-30.6g\n",x,data[2*Ndprime-value1+i],data[2*Ndprime-value1+i+1]); 

我的输出是这样的:

|-0.0859029, |506.929        , |-505.954                      
|-0.079767, |507.13         , |-506.212                      
|-0.0736311, |507.312        , |-506.451                      
|-0.0674952, |507.474        , |-506.671                      
|-0.0613592, |507.618        , |-506.872                      
|-0.0552233, |507.742        , |-507.053                      
|-0.0490874, |507.847        , |-507.216                      
|-0.0429515, |507.933        , |-507.359                      
|-0.0368155, |508            , |-507.484                      
|-0.0306796, |507.798        , |-507.839                      
|-0.0245437, |508.077        , |-508.675                      
|-0.0184078, |509.086        , |-509.242                      
|-0.0122718, |510.077        , |-508.79                       
|-0.00613592, |510.798        , |-507.569 

有没有办法把 |并且左边的数字和逗号之间没有空格?

我知道这是一个非常琐碎的问题,但我似乎找不到任何关于它的东西。提前致谢!

【问题讨论】:

    标签: c output


    【解决方案1】:

    诀窍是寻找的间距取决于double,但间距出现在double 和逗号之后。建议分步打印,使用fprintf()的返回值控制下一个"%*s"。未经测试的代码思路如下:

    fprintf() 返回打印的char 的数量(或EOF 错误)。

    int len;
    len = fprintf(output, "|%-9.6g,", x); 
    len = (len > 13) 1 : 13 + 1 - len;
    len = fprintf(output, "%*s|%-15.6g,", len, "", data[2*Ndprime-value1+i]); 
    len = (len > 16) 1 : 16 + 1 - len;
    fprintf(output, "%*s|%-30.6g\n", len, "", data[2*Ndprime-value1+i+1]); 
    

    【讨论】:

      【解决方案2】:

      这就是我如何保持行左对齐,同时让逗号立即出现在数字之后。

       sprintf(str1, "%.6g,", othernumbers[i]);
       sprintf(str2, "%.6g,", numbers[i]);
      
       printf("|%-10s |%-16s |%-30.6g\n",str2,str1,-othernumbers[i]);
      

      但是要解决您的“|”问题不排队你可能不得不考虑不使用 %g 而使用 %f。

      来自http://www.cplusplus.com/reference/cstdio/printf/ 讨论“.number”

      • 对于 a、A、e、E、f 和 F 说明符:这是要在小数点后打印的位数。
      • 对于 g 和 G 说明符:这是要打印的最大有效位数。

      因此,对于数字 -0.00613592,由于小数点后有 2 个零,因此显示的最小宽度始终为 11。使用 %f 会将其减少到 -0.006135。使用 %g 您将始终有可能超出您的字段宽度。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-09
        • 1970-01-01
        • 2021-07-01
        • 1970-01-01
        • 2019-10-17
        相关资源
        最近更新 更多