我正在開發一個C項目,現在正在使用開源方法集成到我的代碼中。雖然經歷了代碼,我碰到一個的printf說法就是這個樣子的了:「%-9s」是做什麼的?
printf("%-9s",someString);
我理解的格式說明符%S但什麼是%787-9?
我試着尋找解決方案,但沒有成功。任何幫助都會有用。
我正在開發一個C項目,現在正在使用開源方法集成到我的代碼中。雖然經歷了代碼,我碰到一個的printf說法就是這個樣子的了:「%-9s」是做什麼的?
printf("%-9s",someString);
我理解的格式說明符%S但什麼是%787-9?
我試着尋找解決方案,但沒有成功。任何幫助都會有用。
printf("%-9s",someString);
9是字段寬度。如果您將字符串傳遞爲Hi
,則將打印Hi
和七個空格。
如果您將字符串傳遞爲Hai
,則會打印Hai
和六個空格。
-
說左對齊。
編輯
代碼的這些行解釋多一點。
printf("\n%-9s%s", "Hello", "World!"); // left align, Here "Hello" is five characters, because of width -9, prints 4 more spaces after Hello
printf("\n%9s%s", "Hello", "World!"); // right align, because of width 9, prints 4 more spaces before Hello
printf("\n%+9s%s", "Hello", "World!"); // right align, because of width 9, prints 4 more spaces before Hello.
用於"Hello"
串只不是"World!"
字符串這個正常打印所有上述情況下,字段寬度。
輸出
Hello World!
HelloWorld!
HelloWorld!
http://en.wikipedia.org/wiki/Printf_format_string#Format_placeholders –
嗨Gangadhar,我按照你的步驟,並得到了結果,但當我用** printf(「% - 9s%s」,「我的」,「你好「); **,它給出了輸出** 7spaces + My Hello **。它將空格放在字符串的左側。這樣對嗎? –
@CodingPassionate:我測試了'printf(「% - 9s%s」,「我的」,「你好」);'用蘋果鏗鏘5.0,並打印出「我的[七個空格]你好」。如果你的C實現產生了「[七個空格]我的你好」,那麼它被打破了。你確定代碼產生了這個輸出嗎? –
-
登錄用於左對齊指定字段內輸出的格式說明符。
在%-9s
,9
是字段寬度和-
它告訴編譯器左對齊輸出。
%9s
這意味着,如果你的字符串來顯示的長度小於9則顯示字符串並以空格填充它,直到長度達到9個charachters
這並不能解釋'-'。 –
@EricPostpischil我回答了他的問題:「我理解格式說明符%s,但%9s是什麼?」 – MOHAMED
接受投票的答案在標題中回答了問題並解釋了整個說明符。對於忽略'-'的解釋,這顯然是一個優越的答案。 –
你有沒有嘗試?觀察行爲。 –
@GrijeshChauhan:試驗告訴你在某些情況下會發生什麼。它不能證明規則。確定什麼意思是讀取適用文檔的適當方式。 –
@EricPostpischil我相信通過實踐學習一些代碼是非常有幫助和容易的。但是,我同意語言標準/文檔可以說明確切的行爲。 –