簡體   English   中英

c printf 漂亮的打印格式

[英]c printf pretty print formattion

我正在打印一系列行。行的長度不同。有時我必須在行尾添加空格以對齊行。並且在每行的末尾添加“\ n”字符。問題是“\n”之后的新行似乎在下一行的一些空格之后開始。 它很奇怪。 任何建議或意見表示贊賞。

switch(struct.var1) {
    case 0:
switch(struct.var2)
{
case 1: printf("xyx");break;
case 2: printf("abc");break;
}
break;
case 2: printf("xyz");break;
case 3: printf("xyz");break;
.
.
.
.
.
.
.
.
.
.
.
.
.
.
case n: printf("XYZ           ");break;
case m:printf("ABC           ");break;
case 0xff:
switch(struct.var2)
{
    case 1: printf("MNO  ");
    case 2: printf("QRS   ");
}
}//end of switch case.

printf("\n");

請找到上面的代碼片段。 這顯然是 printf 的 alignment 問題。我無法真正發現代碼有任何問題。

你在 Windows 上嗎? 您可能需要在字符串的末尾添加一個\r以及\n

您發布的代碼不足以診斷問題,但我的建議是回避它。 不要在字符串后打印空格來執行 alignment,而是為字符串指定一個正確寬度的字段。

如果可以的話,我要說的另一點是使用數組而不是 switch 語句:

char *strings[256][2] = {
    {"xyz", "abc"},
    // ...
    {"MNO", "QRS"}
};

// print selected string left justified in a 7-character wide field.
printf("%-7s\n", strings[struct.var1][struct.var2]);

從您發布的代碼中不清楚選擇字符串所涉及的值是否完全連續。 如果它們不是很連續,但仍然相當密集(即,您使用了大多數但不是全部的值),那么最簡單的方法可能是用空字符串填充未使用的位置並仍然使用數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM