我是新來的c,並且被字符串結尾字符'\ 0'弄糊塗了,我應該分配它嗎?我應該在c中手動分配字符串結尾字符' 0'嗎?
例如,我想存儲一個最大長度爲6的字符串;
如果我使用數組,我應該使用char str[6]
還是char str[7]
?
char as[3] = "abc";
printf("%s\n", as);
//seems no problem
如果我使用字符指針,我應該使用char *str = malloc(6)
或char *str = malloc(7)
?
是的,請。加上1. – pablo1977
你想存儲一個最大長度爲6的字符串。你應該使用'char str [7]'。如果你使用char指針,你應該使用'char * str = malloc(7);'也'printf(「%s \ n」,as); //這problem' – BLUEPIXY
記住,只是因爲事情似乎工作,這並不意味着它是正確的。在你的例子中,'char as [3] =「abc」',可能會或可能不會是內存中'as'後面的零字節。 'printf'簡單*假設*它有一個指向有效字符串的指針。行爲是未定義的。 –