アプリ版:「スタンプのみでお礼する」機能のリリースについて

入れ子になっている構造体配列の初期化がうまくいきません。
どのようにすればうまくいくでしょうか?

#include <stdio.h>

typedef struct _item
{
int no;
char name[10];
int price;
}ITEM;

typedef struct _all_item_info
{
ITEM ruit[2];
ITEM vegetable[2];
}ALL_ITEM_INFO;

ALL_ITEM_INFO all_item_info =
{
{1, "apple", 100},
{2, "melon", 80},
{3, "tomato", 100},
{4, "radish", 200}
};

int main()
{ ・・・・
}

コンパイルすると、以下のようにエラーになってしまいます。

エラー E2225 kouzoutai7.c 20: 初期化子が多すぎる
エラー E2141 kouzoutai7.c 22: 宣言の構文エラー
エラー E2190 kouzoutai7.c 22: 不要な }
エラー E2190 kouzoutai7.c 22: 不要な }

OSはwindows、 コンパイラはBorland C++ Compilerです。

A 回答 (3件)

VC++ 2008で再現。


普段からC++やってるわけじゃないけど、
一応コンパイル通せた。
こうしろ、ってことでしょ?多分。

ALL_ITEM_INFO all_item_info =
{
{{1, "apple", 100},{2, "melon", 80}}, /* ruitは0,1までしかないんだから多分4個書いたら誤り*/
{{3, "tomato", 100},{4, "radish", 200}}
};
    • good
    • 0

#2です。



>どこにも

これは語弊がありました。申し訳ありません。
しかし、質問者さんがしたかったことは、#2の回答の
とおりではないでしょうか?
    • good
    • 0

>入れ子になっている構造体配列の初期化



と書かれているのに、どこにも構造体の配列が見当たりません。
こんな風に書きましょう。

ALL_ITEM_INFO all_item_info[] = {
{ { 1, "apple", 100 }, { 2, "melon", 80 } },
{ { 3, "tomato", 100 }, { 4, "radish", 200 } }
};
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!