1. ホーム
  2. c

[解決済み】インクリメントオペランドとして lvalue が必要です。

2022-02-11 08:50:39

質問

gcc 4.4.4

何が間違っているのでしょうか?

char x[10];
char y[] = "Hello";
while(y != NULL)
    *x++ = *y++;

何かアドバイスがありましたら、よろしくお願いします。

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

x++ の短縮形です。 x = x + 1 . しかし x は配列であり、配列のアドレスを変更することはできません。あなたの変数 y もあります。

配列のインクリメントを試みる代わりに、整数を宣言することができます。 i にアクセスし、それをインクリメントした後 i 番目のインデックスを指定します。

char x[10], y[5] = "Hello";
int i = 0;
while (y[i] != 0)
{
    x[i] = *y[i];
    i++;
}
x[i] = 0;