C語言中的%s是什麼意思

在C語言中,%s是一個格式字元串(format string)的特殊字元序列,用於指示輸出操作應該將字元串(string)數據寫入到指定的位置。當你使用C語言的輸出函數,如printf()scanf()時,可以使用格式字元串來控制輸出的格式。

printf()遇到%s時,它會將其替換為一個字元串,並將其內容從內存中複製到輸出目的地。這個字元串可以是一個字面量字元串,也可以是一個變量的值,取決於你在格式字元串中使用的變量名稱或地址。

例如,以下代碼使用printf()來輸出一個字元串字面量:

#include <stdio.h>

int main() {
    char *str = "Hello, world!";
    printf("%s", str);
    return 0;
}

在這個例子中,printf()的格式字元串"%s"告訴程式將變量str的值作為一個字元串輸出。輸出結果將是「Hello, world!」。

%s也可以用於讀取字元串,例如使用scanf()

#include <stdio.h>

int main() {
    char str[100];
    printf("Enter a string: ");
    scanf("%s", str);
    printf("You entered: %s\n", str);
    return 0;
}

在這個例子中,scanf("%s", str);告訴程式從標準輸入讀取一個字元串並將其存放在str陣列中。當用戶輸入字元串並按下Enter鍵時,該字元串會被讀取並存放在str中,然後使用printf()將其輸出。

需要注意的是,%s格式字元串預期的是一個指向字元的指針(char pointer),也就是說,str應該是一個字元型指針變量,或者是一個可以轉換為字元型指針的變量。此外,當使用scanf()讀取字元串時,%s只會讀取空白字元(空格、制表符和換行符)分隔的字元串,並且不會讀取超過指定緩衝區大小的字元。因此,在使用%s讀取字元串時,需要確保有足夠的空間來容納字元串,並且要小心不要讀取到未定義的內存位置。