[C/C++] 別忘了在char陣列結尾加/0...


今天就為了這個問題debug很久...問題是這樣的:我想要製造儲存一個BIG5字元的char陣列。(每個BIG5字元需要兩個char儲存,舉例來說,"A5 D0"為"田")理所當然寫了這樣一段:


char BIG5_character[2];
BIG5_character[0] = 0xA5;
BIG5_character[1] = 0xD0;

cout << BIG5_character;


理論上應該會看到"田",實際上田是出來了,但後面跟了一串亂碼:"田p~+" 原因在於一個完整的字串,必須要在結尾放一個結束字元 \0,忘了放則cout會繼續往下輸出。

因此把原code修改一下:



char BIG5_character[3];
BIG5_character[0] = 0xA5;
BIG5_character[1] = 0xD0;
BIG5_character[2] = 0;          // 結束字元的ASCII編號是0

cout << BIG5_character;


這樣就可以得到正確輸出"田"了,不過這麼基本的東西我竟然到現在才知道... STL用太多了XD





留言

這個網誌中的熱門文章

大彎國家公園: 四日行程 Four Days in Marfa & Big Bend