簡體   English   中英

printf中的空格填充不起作用

[英]Space padding in printf doesn't work

我需要在字符串之前添加可變空格填充。 這是代碼:

unsigned int spaces = result % 16;
printf("spaces=%d\n", spaces); // spaces=12, for example.
printf("% *s\n", spaces, my_string);

它根本不起作用-沒有添加空格,並且我在gcc中收到以下警告:

warning: ' ' flag used with '%s' gnu_printf format [-Wformat=]

如何解決? 有什么解決方法嗎?

改變這個

printf("% *s\n", spaces, my_string);

對此

printf("%*s%s\n", spaces, " ", my_string);

這應該擺脫警告,並達到預期的效果。

[編輯]

我現在看到您已經找到答案。 亞歷克西斯所說的也是正確的,並且會產生相同的效果。 我想說,Alexis的版本更干凈,所以我將其作為解決方案,但是功勞在他身上。

您還可以執行以下操作:

int width = 5;
printf ("%*d%*d\n", width, 10, width, 12);

它將打印此:

10 12

資源

因此,如果您考慮一下,可以這樣做:

printf("%*s\\n", spaces, "foo");


為什么亞歷克西斯的版本在評論中與您的版本同義?

因為編譯器將兩個連續的字符串(即中間有一個空格)連接為一個。

此操作稱為String文字串聯 Wikipedia中閱讀更多內容

暫無
暫無

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

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