1. 程式人生 > >c字串的初始化問題

c字串的初始化問題

c字串的初始化問題:

char *str = (char*)malloc(sizeof(char)*10);

for(int i = 0; i < 7; i++)

      str[i]  = '#';

printf(“%s\n", str);

上面的程式碼中,只初始化了前7個位置,後面的3個沒有初始化,所以輸出後面的3個字元會隨機初始化,會出現亂碼現象。

正確的做法是在第8個字元的位置賦值為“\0”,這樣才會只輸出前7個字元。

而用scanf()給c字串賦初值時不用在最後一個字元後加“\0”,因為scanf()會在最後一個字元後自動加上“\0”,但是當我們不用scanf()函式初始化時,必須要在後面加上“\0”。或者也可以用memset()函式將所有字元都初始化為‘ ’。

用字元陣列時也一樣。