若是以陣列正規的方式來表示,寫起來多累啊……:
char S[6]={'H', 'e', 'l', 'l', 'o', '\0'};
但若是以剛剛所提到的較為便利的方式呢,那可就輕鬆多了:
char S[6]="Hello";
除此之外尚有一點必須注意到的,就是字串結尾必須要有一個「\0」字元作為結尾,不然若是使用printf( )之類的函式來輸出時,輸出的字串結尾會有一些奇怪的東東,那讀者或許會疑問第二種表示方式為何結尾處沒加「\0」字元呢?這是因為以這種方式寫的字元陣列,會自動在字串結尾處配置「\0」字元,除非說所給的陣列大小無法容納所要表示的字串,所以在使用上,我們只須注意是否配給了適當大小的陣列即可。
說明的範例裡頭除了會將這二種字串使用的方式做個示範外,也會將這二種方式在結尾時不加「\0」字元會有何結果,一併列出給讀者看看。
原始程式碼:
代碼: |
01 #include 02 03 main(void) 04 { 05 char S0[5]={'H', 'e', 'l', 'l', 'o'}; 06 char S1[6]={'H', 'e', 'l', 'l', 'o', '\0'}; 07 char S2[5]="Hello"; 08 char S3[6]="Hello"; 09 10 printf("\nS0=%s\n", S0); 11 printf("\nS1=%s\n", S1); 12 printf("\nS2=%s\n", S2); 13 printf("\nS3=%s\n", S3); 14 } |
原始程式碼說明:
05 char S0[5]={'H', 'e', 'l', 'l', 'o'};
因為第5行程式碼裡頭的S0陣列不夠大,同時也沒有字串結尾字元「\0」,所以最後顯示出來的結果是不正確的,字串尾巴多了許許多多奇怪的符號。
06 char S1[6]={'H', 'e', 'l', 'l', 'o', '\0'};
因為第6行程式碼裡頭的S1陣列夠大,同時也有字串結尾字元「\0」,所以最後顯示出來的結果就是正確的。
07 char S2[5]="Hello";
08 char S3[6]="Hello";
這二行程式碼的情形與第5行、第6行程式碼的情形是相同的,差別僅在用法上的不同,這種字元陣列宣告的方式,會自動在字串結尾處配置「\0」字元,所以只須注意是否配給了適當大小的陣列即可。
還有下面的另外一種寫法,這種寫法更輕鬆:
char S3[]="Hello";