2012-01-26 520 views
19

我不明白什麼%sd%在這個C代碼做:%s和%d在C語言的printf中是什麼意思?

for (i=0;i<sizeof(code)/sizeof(char*); i++) { 
    printf("%s%d%s%d\n", "Length of String ", i, " is ", strlen(code[i])); 
    str = code[i]; 
    printf("%s%d%s%c\n","The first character in string ", i, " is ", str[0]); 
} 

我是新來的C語言和我的背景是在Java中。

  • %s%d%s%d符號表示什麼?
  • 爲什麼會有這麼多人?
  • 這裏用逗號而不是+表示逗號嗎?
+7

你看過男人3 printf嗎? http://linux.die.net/man/3/printf –

+7

傳遞給'printf'的字符串是無意義的 - 應該是'printf(「字符串%d的長度是%d \ n」,i,strlen(code [i]));' –

+0

所以字符串文字只是表示字符串中哪些位置的輸出被放置在哪裏?這似乎是一種奇怪的做事方式? –

回答

43

printf()系列函數使用%字符作爲佔位符。當遇到%,printf的讀取繼%人物,以確定該怎麼做:

%s - Take the next argument and print it as a string 
%d - Take the next argument and print it as an int 

見一個漂亮的圖片這個維基百科文章:printf format string

\n在字符串的結尾是換行符/回車符。

+1

謝謝,正是我想知道的:)。 –

+4

沒問題!只是一個頭:它並不總是一個字符後跟一個%。他們可能會有點瘋狂 - %.02lf - 但可以讓你做一些整潔的事情:) – iccir

3

%符號被稱爲格式說明符。例如,%d告訴printf()打印一個整數。 %s打印一個字符串(char *)等。您應該在這裏查看它:http://google.com/search?q=printf+format+specifiers

不,逗號不用於字符串連接。逗號用於分隔傳遞給函數的參數。

3

第一個參數表示後續變量/參數的佔位符。
例如,%s表示您希望String成爲您的第一個打印參數。

Java也有一個printf,這非常相似。

+1

啊我明白了!我現在明白了!謝謝,非常有幫助:) –

1

printf的第一個參數是一串標識符。

%s指字符串 %d指整數 %c指字符。 因此:%s%d%s%c \ n打印字符串「sting中的第一個字符」,%d打印i,%s打印「is」,%c打印str [0]。

1

%s是字符串 %d爲小數(或INT) %C是用於字符

它似乎是通過字符的陣列來咀嚼,並打印出的任何字符串存在起始於每個後續位置。在每種情況下,字符串將停止在第一個空值處。

逗號只是分隔了一個函數的參數,該函數接受可變數目的參數;這個數字對應於前面格式描述符中的%args的數量。

0

%(字母)表示替換文本的格式類型。 %s指定一個字符串,%d指定一個整數,%c指定一個char。

0

%s%d%s%d \ n是格式字符串。它用於指定信息在輸出上的格式。這裏的格式字符串應該打印字符串,後面跟着一個數字,後面跟着一個字符串,然後又是一個數字。最後一個符號\ n表示回車符號,表示一行的結尾。在C中,字符串不能通過+或連接,儘管您可以通過使用適當的格式字符串在一行中組合不同的輸出(使用格式字符串將格式化輸出信息)。

1

"%s%d%s%d\n"是格式字符串;它告訴printf函數如何格式化和顯示輸出。格式字符串中的任何內容都不會立即在其前面顯示%將按原樣顯示。

%s%d是轉換說明符;他們告訴printf如何解釋剩餘的參數。 %s告訴printf相應的參數將被視爲一個字符串(以C語言,char的0結束序列);相應參數的類型必須是char *%d告訴printf相應的參數將被視爲一個整數值;相應參數的類型必須是int。由於您來自Java背景,因此需要注意的是printf(與其他可變參數函數一樣)依靠來告訴它其餘參數的類型是什麼。如果格式字符串是"%d%s%d%s\n",則printf會嘗試將"Length of string"作爲整數值,將i作爲字符串處理,併產生悲劇結果。

2

%d是打印爲int %s是打印作爲一個字符串 %f是打印浮點

應當指出的是,這是不正確的說,這是從Java不同。 Printf代表打印格式,如果使用Java進行格式化打印,則這與使用方法完全相同。這可能允許您解決C和Java中的有趣和新問題!

相關問題