<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # C 編程字符串 > 原文: [https://www.programiz.com/c-programming/c-strings](https://www.programiz.com/c-programming/c-strings) #### 在本教程中,您將學習 C 編程中的字符串。 您將學習通過示例來聲明它們,對其進行初始化以及如何將它們用于各種 I/O 操作。 在 C 編程中,字符串是一個以空字符`\0`結尾的字符序列。 例如: ```c char c[] = "c string"; ``` 當編譯器遇到用雙引號引起來的字符序列時,默認情況下會在末尾附加一個空字符`\0`。 ![Memory diagram of strings in C programming](https://img.kancloud.cn/4e/f9/4ef9d237ac53a3cbd72a770761a51de3_430x61.png "Strings in memory diagram") * * * ## 如何聲明一個字符串? 聲明字符串的方法如下: ```c char s[5]; ``` ![string declaration in C programming](https://img.kancloud.cn/96/35/9635305af17519a8103adf995e5760d2_235x64.png "String declaration") 在這里,我們聲明了一個 5 個字符的字符串。 * * * ## 如何初始化字符串? 您可以通過多種方式初始化字符串。 ```c char c[] = "abcd"; char c[50] = "abcd"; char c[] = {'a', 'b', 'c', 'd', '\0'}; char c[5] = {'a', 'b', 'c', 'd', '\0'}; ``` ![Initialization of strings in C programming](https://img.kancloud.cn/fe/25/fe25555da4ca7869b23fe4a69a9cff89_240x71.png "String Initialization") 讓我們再舉一個例子: ```c char c[5] = "abcde"; ``` 在這里,我們試圖將 6 個字符(最后一個字符為`'\0'`)分配給具有 5 個字符的`char`數組。 這很糟糕,您永遠不要這樣做。 * * * ## 給字符串賦值 數組和字符串是 C 語言中的二等公民。 一旦聲明,它們就不支持賦值運算符。 例如, ```c char c[100]; c = "C programming"; // Error! array type is not assignable. ``` **注意**:使用[`strcpy()`函數](/c-programming/library-function/string.h/strcpy "C strcpy")復制字符串。 * * * ## 從用戶讀取字符串 您可以使用`scanf()`函數讀取字符串。 `scanf()`函數讀取字符序列,直到遇到[空格](https://stackoverflow.com/questions/30033582/what-is-the-symbol-for-whitespace-in-c)(空格,換行符,制表符等)為止。 * * * ### 示例 1:`scanf()`讀取字符串 ```c #include <stdio.h> int main() { char name[20]; printf("Enter name: "); scanf("%s", name); printf("Your name is %s.", name); return 0; } ``` **輸出** ```c Enter name: Dennis Ritchie Your name is Dennis. ``` 即使在上述程序中輸入了`Dennis Ritchie`,在`name`字符串中也僅存儲了`"Dennis"`。 這是因為`Dennis`之后有一個空格。 * * * ### 如何讀取一行文本? 您可以使用`fgets()`函數讀取一行字符串。 并且,您可以使用`puts()`顯示字符串。 * * * ### 示例 2:`fgets()`和`puts()` ```c #include <stdio.h> int main() { char name[30]; printf("Enter name: "); fgets(name, sizeof(name), stdin); // read string printf("Name: "); puts(name); // display string return 0; } ``` **輸出** ```c Enter name: Tom Hanks Name: Tom Hanks ``` 在這里,我們使用`fgets()`函數從用戶讀取字符串。 `fgets(name, sizeof(name), stdlin); // read string` `sizeof(name)`的結果為 30。因此,我們最多可以輸入 30 個字符,這是`name`字符串的大小。 為了打印字符串,我們使用了`puts(name);`。 **注意**: `gets()`函數也可以接受用戶輸入。 但是,它已從 C 標準中刪除。 這是因為`gets()`允許您輸入任何長度的字符。 因此,可能存在緩沖區溢出。 * * * ## 將字符串傳遞給函數 字符串可以通過類似于數組的方式傳遞給函數。 了解有關[將數組傳遞給函數](/c-programming/c-arrays-functions)的更多信息。 * * * ### 示例 3:將字符串傳遞給函數 ```c #include <stdio.h> void displayString(char str[]); int main() { char str[50]; printf("Enter string: "); fgets(str, sizeof(str), stdin); displayString(str); // Passing string to a function. return 0; } void displayString(char str[]) { printf("String Output: "); puts(str); } ``` * * * ## 字符串和指針 類似于數組,字符串名稱“退化”到指針。 因此,您可以使用指針來操作字符串的元素。 我們建議您在檢查本示例之前,先檢查 [C 數組和指針](/c-programming/c-pointers-arrays "C Arrays and Pointers")。 * * * ### 示例 4:字符串和指針 ```c #include <stdio.h> int main(void) { char name[] = "Harry Potter"; printf("%c", *name); // Output: H printf("%c", *(name+1)); // Output: a printf("%c", *(name+7)); // Output: o char *namePtr; namePtr = name; printf("%c", *namePtr); // Output: H printf("%c", *(namePtr+1)); // Output: a printf("%c", *(namePtr+7)); // Output: o } ``` * * * ### 常用的字符串函數 * [**`strlen()`** - 計算字符串的長度](/c-programming/library-function/string.h/strlen) * [**`strcpy()`** - 將字符串復制到另一個](/c-programming/library-function/string.h/strcpy) * [**`strcmp()`** - 比較兩個字符串](/c-programming/library-function/string.h/strcmp) * [**`strcat()`** - 連接兩個字符串](/c-programming/library-function/string.h/strcat)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看