[解決済み】構造体フィールドを代入すると「error: 式への代入で配列型エラーが発生しました」(C言語)
2022-01-16 19:01:52
質問
簡単なC言語プログラミングを書いています。コードは以下の通りです。
#include <stdio.h>
#define N 30
typedef struct{
char name[N];
char surname[N];
int age;
} data;
int main() {
data s1;
s1.name="Paolo";
s1.surname = "Rossi";
s1.age = 19;
getchar();
return 0;
}
コンパイルすると(WindowsのGCC 4.9.3-1)、エラーが発生します。
"error: assignment to expression with array type error"
命令で
s1.name="Paolo"
s1.surname="Rossi"
をする間に
data s1 = {"Paolo", "Rossi", 19};
が動作します。
解決方法は?
での問題に直面しています。
s1.name="Paolo";
というのも,LHSで 配列 型であり、これは 割り当て可能 .
さらに詳しく説明すると
C11
章6.5.16
代入演算子は、左オペランドとして変更可能な lvalue を持たなければならない。
であり、また 変更可能な lvalue 章6.3.2.1より
変更可能なlvalueとは、配列型を持たないlvalueのことです[...]。
を使用する必要があります。
strcpy()
から
にコピーします。
という配列になります。
それはそうと。
data s1 = {"Paolo", "Rossi", 19};
は問題なく動作します。なぜなら、これは直接
代入
には、代入演算子が含まれます。そこでは
中括弧で囲まれたイニシャライザーリスト
の初期値を提供する。
オブジェクト
. これは、§6.7.9 章で述べたように、初期化の法則に従ったものです。
中括弧で囲まれた各イニシャライザーリストには、関連する現在のオブジェクトがあります。指定がない場合、カレントオブジェクトのサブオブジェクトは、カレントオブジェクトの型に従った順序で初期化されます:配列要素は添え字の増加順、構造体メンバーは宣言順、ユニオンの最初の名前付きメンバーです[......]。
関連
-
[解決済み】C++ -- ' の前に一次式があることが予想される。
-
[解決済み】R: predict() で数値 'envir' 引数が長さ1でない。)
-
[解決済み】C++ Cout & Cin & System "Ambiguous" [クローズド]。
-
[解決済み】gitが「Pull is not possible because you have unmerged files」と言うのはなぜですか?
-
[解決済み】'const char*' から 'char*' への無効な変換。
-
[解決済み】constで変数を初期化しようとすると「initializerの要素が定数でない」というエラーが発生する。
-
[解決済み】rmarkdownエラー "長さ0の変数名を使おうとした"
-
[解決済み】makefile:4。*** missing separator. 停止する
-
[解決済み】ファイルにデータを書き込むときにこのエラーが発生する理由
-
[解決済み】git pullしようとするとエラー: .git/FETCH_HEAD を開けない: パーミッションが拒否される
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Swift言語とAppleScriptの違い、AppleScriptの開発状況について教えてください。
-
linux シェル学習ノート 5日目
-
linux シェル学習ノート 4日目
-
[解決済み] 式は変更可能なlvalueでなければならない
-
[解決済み】入力文字列のフォーマットが正しくない
-
[解決済み】'const char*' から 'char*' への無効な変換。
-
[解決済み] '\r': コマンドが見つかりません - .bashrc / .bash_profile [重複].
-
[解決済み】データフレームで関数を適用する場合、dim(X)は正の長さでなければならない
-
[解決済み】ValueError: 入力配列を形状 (224,224,3) から形状 (224,224) にブロードキャストできませんでした。)
-
[解決済み】math.hを含むにもかかわらず、C言語でpow( )への未定義参照【重複あり