文字列を文字列に割り当てるためにstrcpy()が必要な理由を以下のコードスニペットで説明してください。C - なぜstrcpy()が必要なのですか?
int main(void) {
char s[4];
s = "abc"; //Fails
strcpy(s, "abc"); //Succeeds
return 0;
}
s = "abc"
が失敗する理由は何ですか?そして、なぜ文字列が宣言された後でchar配列に文字列を割り当てる唯一の方法はstrcpy()ですか?基本的な割り当てを行うために関数を使用しなければならないということは私にとっては奇妙なことです。
ええ私はポインタを使用して、私はちょうどs = "abc"が私の例では動作しない理由を理解していない。 sは文字配列で、 "abc"も同様です... –
@ C_p678 - いいえ、 's'は文字配列です、" abc "は定数文字列へのポインタです。 – MByD
@MByD:完全には正しくありません。 '' abc ''はポインタではありません。 '' abc''型の配列 'char [4]'は、この文脈では 'char *'型のポインタに崩壊します。 Cの文字列は定数ではないことに注意してください。これは変更不可能ですが、型自体には 'const'修飾子は含まれていません。 – AnT