| 在C
中字串的本質是由字元所組成的陣列,並在最後加上一個空(null)字元'\0',例如下面這個程式就是一個"hello"字串的宣告: char
str[] = {'h', 'e', 'l', 'l', 'o', '\0'};
之後您可以直接使用str來代表該字串,例如在文字模式下輸出str字串: printf(str);
printf("%s\n", str); C是使用空字元來識別一個字元陣列是否表示字串,像上例就可以用來表示一個字串"hello",在C中您也可以這麼宣告字串: char
str[] = "hello";
在這個例子中,雖然您沒有指定空字元'\0',但是程式會自動加上空字元,而它基本上還是字元陣列,與前一個宣告方式是相同的,您從下面這個程式就可以知 道: #include <stdio.h> 執行結 果:
字串是字元陣列,所以您可以使用陣列的存取方式取出每一個字元,在指定"hello"時表面上雖然只有5個字元, 但是最後會加上一個空字元'\0',所以 str[]共使用了6個字元,由於字串的最後一個字元為空字元,所以您可以檢驗這個字元來看看字串是否為空,例如: if(str[0]
== '\0') {
puts("字串為空"); } 空字元在作條件判斷時,會被視為0,所以上式還可以這麼寫: if(
! str[0] ) {
puts ("字串為空"); } 字串一但指定,它的長度就固定了,也就是字元陣列的長度,所以您由使用者輸入取得字串值時,需注意不要超過字串的長度;從使用者輸入取得字串值只要這麼作 就可以了: char
str[80];
printf("輸入字串:"); scanf("%s", str); printf("您輸入的字串為 %s\n", str); 這個程式片段可以取得使用者的字串輸入,所輸入的字串長度不得超過80個字元,80個字元的上限包括空白字元,所以實際上可以輸入79個字元;如果輸入的 字元超出所宣告的上限,會發生不可預期的錯誤。 在使用scanf()取得使用者輸入的字串時,格式指定字是使用%s,而變數前不用再加上&,因為實際上,字串(字元陣列)變數名稱本 身,即表示記憶體位址資訊。 要指定新的字串值給它時,您不能像下面的方式指定: char
str[80];
str = "Just"; 而必須要一個字元一個字元的指定至陣列中,並在最後加上空白字元,例如: char
str[80] = {'\0'};
str[0] = 'J'; str[1] = 'u'; str[2] = 's'; str[3] = 't'; str[4] = '\0'; puts(str); 這樣的字元指定方式當然相當的不方便,所以C提供了字串處理的相關函式,可以協助您進行一些字串 處理,在之後的主題還會說明。 字串的宣告還有指標(Pointer)的宣告方式,這個留待談到指標時再來說明。 |