1. ホーム
  2. c

[解決済み] 文字列を文字の配列に代入する

2023-06-10 21:26:10

質問

次のことに少し驚いています。

例1:

char s[100] = "abcd"; // declare and initialize - WORKS

例2:

char s[100]; // declare
s = "hello"; // initalize - DOESN'T WORK ('lvalue required' error)

なぜ2番目のアプローチがうまくいかないのか不思議です。他のデータ型では動作する)のが自然だと思うのですが?どなたかこの背後にある論理を説明していただけませんか?

どのように解決するのですか?

C言語では、配列を初期化する際に、その配列を値で埋めることができます。そのため

char s[100] = "abcd";

とは基本的に同じです。

int s[3] = { 1, 2, 3 };

が、これでは代入ができないので s は配列であり、フリーポインタではないので、代入はできません。の意味は

s = "abcd" 

のポインタ値を代入することです。 abcds を変更することはできませんが s を変更すると、配列を指すものがなくなってしまうからです。

これは、もし schar* - を指し示すことができるポインタです。

文字列をコピーしたい場合は、単純に strcpy .