我想編輯使用字符文字初始化後的字符串,如下所示:爲什麼改變一個字符串的字符不能給出想要的字符?
int main() {
char str1[10] = "hello";
str1[0] = "b";
printf("%s\n", str1);
return 0;
}
結果是「報」,即一個「d」,而不是「B」。同樣,下面只是提供廢話。
int main() {
char str1[10];
str1[0] = "h";
str1[1] = "e";
str1[2] = "l";
str1[3] = "l";
str1[4] = "o";
printf("%s\n", str1);
}
我發現一個StackOverflow上post是提到這一點應引起段錯誤或接入衝突錯誤,但它並沒有真正解釋爲什麼。
'STR1 [0] = 「B」;'==>'STR1 [0] = 'B';' –
」 ...用字符文字.. 。「 - 這些不是字符文字;他們是*字符串*文字。 – WhozCraig
你必須注意編譯器警告。你的代碼在GCC中生成了幾個,甚至沒有打開額外的警告。 –