1. 前言
在 C 語言中,字串被視為單純的字元陣列。由於這個特性,必須採用與其他程式語言不同的處理方式。特別是在字串的賦值與初始化時,終止字元(
)的使用是不可或缺的。本文以「C 語言 字串 賦值」為主題,從基礎宣告到賦值與操作方法進行詳細說明,並涵蓋維持程式穩定性所需的注意事項。
2. 字串的宣告與初始化
在 C 語言中,字串的宣告是透過字元陣列來完成的。以下示範幾種常見的宣告與初始化方式。
使用陣列的宣告與初始化
字串可以透過陣列進行宣告與初始化,如下所示:
char greeting[] = "Hello";
在上述範例中,名為 greeting
的字串被初始化為 “Hello”,並在最後自動加入終止字元(
)。在 C 語言中,可以在陣列宣告時使用「=
」運算子進行初始化,且通常會省略長度的指定。
加入終止字元
如果以單一字元進行初始化,則必須手動加入終止字元,如下所示:
char greeting[6] = {'H', 'e', 'l', 'l', 'o', ' '};
在 C 語言中,若缺少這個終止字元,字串處理函數將無法正確運作,甚至可能讀取超出記憶體邊界的內容,導致非預期的行為。

3. 字串的賦值方法
在 C 語言中,無法直接將一個字串賦值給另一個字串變數。若要將字串內容複製到另一個變數,必須使用 strcpy
函數。
strcpy 函數的基本用法
strcpy
是標準函式庫 <string.h>
中的函數,用法如下:
#include <stdio.h>
#include <string.h>
int main() {
char source[] = "Hello";
char destination[10];
strcpy(destination, source);
printf("複製的字串: %s\n", destination);
return 0;
}
此程式將 source
的字串內容複製到 destination
,最終 destination
會儲存 “Hello”。由於 strcpy
不會檢查陣列大小,因此必須小心避免超出陣列容量。
4. 字串的操作
C 語言提供多個方便的函數來操作字串。以下介紹幾個常用的函數,例如 strlen
、strcat
、strcmp
。
取得字串長度:strlen
使用 strlen
函數可以取得字串長度(不包含終止字元)。
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello";
printf("字串長度: %zu\n", strlen(str));
return 0;
}
字串串接:strcat
strcat
函數可將一個字串接到另一個字串的後面。
#include <stdio.h>
#include <string.h>
int main() {
char greeting[20] = "Hello";
char name[] = " World";
strcat(greeting, name);
printf("串接後的字串: %s\n", greeting);
return 0;
}
字串比較:strcmp
strcmp
函數會依字典順序比較兩個字串。相等時回傳 0,不相等時回傳正值或負值。
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "Hello";
char str2[] = "World";
int result = strcmp(str1, str2);
if (result == 0) {
printf("字串相同。\n");
} else {
printf("字串不同。\n");
}
return 0;
}
透過此方法,可以判斷字串是否相同,或比較它們在字典順序中的先後。
5. 使用指標處理字串
在 C 語言中,也可以透過指標來處理字串。使用指標能進行更靈活的記憶體操作,但若操作錯誤,可能導致錯誤或程式崩潰,因此需格外小心。
使用指標進行字串賦值
使用指標時,可以如下宣告與賦值:
#include <stdio.h>
int main() {
char *greeting = "Hello";
printf("%s\n", greeting);
return 0;
}
如上所示,指標可以直接指向字串常值。但需要注意的是,字串常值的內容不可修改。
6. 總結與注意事項
在處理字串賦值與操作時,容易發生陣列溢位或指標非法存取等錯誤。尤其在使用 strcpy
與 strcat
時,必須考慮陣列大小並預留足夠的緩衝區。此外,使用指標時也需注意終止字元與記憶體管理。如果能依正確步驟實作,字串操作將能有效支援資料處理。