[英]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.