在 C 語言中,字符串並非內建的基本數據類型,而是以 空字符('\0') 結尾的一維字符數組。這意味著字符串的實際長度會比可見字符數多一位,用於存儲結束標記。
我們可以通過兩種方式創建字符串。第一種是逐字符初始化,需手動添加結束符:
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
第二種方式更為簡潔,利用字符串字面量讓編譯器自動補全結束符:
char greeting[] = "Hello";
以下圖示展示了字符串在內存中的佈局:
編寫一個完整程序來驗證字符串輸出:
#include <stdio.h>
int main() {
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
printf("Greeting message: %s\n", greeting);
return 0;
}
運行結果:
Greeting message: Hello
C 標準庫 <string.h> 提供了豐富的字符串處理函數,以下是最常用的六個:
| 函數 | 功能描述 |
|---|---|
| strcpy(s1, s2) | 將字符串 s2 複製到 s1 |
| strcat(s1, s2) | 將字符串 s2 連接到 s1 末尾 |
| strlen(s1) | 返回字符串 s1 的長度(不含結束符) |
| strcmp(s1, s2) | 比較兩字符串:相等返回 0,s1<s2 返回負值,s1>s2 返回正值 |
| strchr(s1, ch) | 查找字符 ch 在 s1 中首次出現的位置,返回指針 |
| strstr(s1, s2) | 查找字符串 s2 在 s1 中首次出現的位置,返回指針 |
#include <stdio.h>
#include <string.h>
int main() {
char str1[12] = "Hello";
char str2[12] = "World";
char str3[12];
int len;
/* 字符串複製 */
strcpy(str3, str1);
printf("strcpy(str3, str1): %s\n", str3);
/* 字符串連接 */
strcat(str1, str2);
printf("strcat(str1, str2): %s\n", str1);
/* 獲取長度 */
len = strlen(str1);
printf("strlen(str1): %d\n", len);
return 0;
}
運行結果:
strcpy(str3, str1): Hello strcat(str1, str2): HelloWorld strlen(str1): 10
掌握這些基礎操作後,您可以在 C 標準庫文檔中探索更多進階字符串處理函數,如 strncpy、strncat、strtok 等,以應對更複雜的文本處理需求。