2012-12-06 60 views
-1

我想知道如何在輸出中排列我的列以排隊,我想用%g來打印並且必須用逗號分隔,但我努力得到他們排隊。在C中打印整數中的重要位置

我目前全部打印兼作:

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 

有沒有辦法排隊|並且在左邊的數字和它的逗號之間沒有空格?

我知道這是一個非常微不足道的問題,雖然我似乎無法找到任何東西。提前致謝!

回答

0

這是我能夠保持行左對齊,同時讓逗號出現在數字後面。

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/ discusing '數'

  • 對於,A,E,E,F和F指示符:這是小數點後要打印的位數。
  • 對於g和G說明符:這是要打印的有效數字的最大數目。

所以對於數-0.00613592它將始終採取的11的最小寬度,因爲小數點後的2個零的顯示量。使用%f會將其降至-0.006135。與%g,你總是有可能超越你的領域寬度。

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]);