簡體   English   中英

C:將char *傳遞給printf語句中的%s

[英]C: Passing a char* to a %s in a printf statement

我正在為期中學習而在理解概念時遇到一些麻煩。 這是問題:

以下代碼行的輸出是什么:

char S1[50] = "jack", S2[50] = "jill", S3[50], *Sptr;

printf("%c$s\n", toupper(S1[0]), &S1[1]);

輸出是

Jack

我不明白,為什么要打印“傑克”。 %s應該打印一個字符串,對嗎? &S1 [1]是字符串嗎? 我以為這是S1 [1]的地址。 不是嗎?

謝謝您的幫助。

printf("%c%s\\n", toupper(S1[0]), &S1[1]);

讓我們分解一下

%c和相應的S1[0]打印S1[0]的大寫第一個字符。 (J)

%s和對應的&S1[1]打印字符串的其余部分。 (ack)

&S1[1]正在傳遞字符串第二個字符的內存地址。

&S1 [1]是一個地址,它指向“ jack”的“ a”。 因此%s表示要顯示從“ jack”的“ a”到末尾的字符串。 通常'\\ 0'是字符串的結尾。 這意味着'%s'打印'ack'到'jack'。 '%c'打印一個字符,即J. toupper()僅更改一個字符。

暫無
暫無

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

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