Re: [問題] fprintf如何靠右對齊?
※ 引述《deo2000 (800IM)》之銘言:
恕刪。
: 請問要怎麼做?
我發現已到了雞同鴨講的地步。
我於推文中已敘述,printf("%-5d", x); 使用 - 做對齊時,
「必須」要指定欄位寬度,於是才有 printf("%-8.3lf", x);
但 %-.3lf 只有指定精度,沒指定欄位寬度。
要做到你說的對齊,這裡用一個小技巧,但這應不會是唯一解法,
應會有更好的解法
#define N 5
#define BUF_SIZE 20
int i, j;
const int precision = 3;
const int width[N] = {8,8,8,9,10};
const char title[N][BUF_SIZE] = {"", "Test1", "Test2", "Test3", "Test4"};
double value[N] = {1,2,3,4,5};
// write title
for(i=0; i!=N; ++i) printf("%-*s", width[i], title[i]);
putchar('\n');
// write value
for(i=0; i!=N; ++i) printf("%-*.*lf", width[i], precision, value[i]);
----------
(1) %*.* 在 printf / fprintf 是幹嘛的請查一下。
(2) 這方式比較建議在 console 下使用,但如果是寫入 .txt 的話,
我還是比較習慣全都用 \t,你看起來會很亂是因為你用 notepad.exe 開啟,
一般我是用 excel 去開啟,看起來也比較整齊,也比較容易整理結果,
要在 notepad.exe 、 excel 看起來都很整齊的話,
printf("%*.*lf\t", width[i], precision, value[i]);
如你所見,一行的文字會愈拉愈長。
--
YouLoveMe() ? LetItBe() : LetMeFree();
--
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 編輯: tropical72 來自: 180.177.73.222 (06/13 02:40)
推
06/15 03:00, , 1F
06/15 03:00, 1F
推
06/17 13:31, , 2F
06/17 13:31, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):