[解決済み】エラー。非スカラー型への変換を要求された
2022-02-01 20:56:42
質問
この構造体をmallocしようとして、ちょっとした問題が発生しています。 以下は、この構造体のコードです。
typedef struct stats {
int strength;
int wisdom;
int agility;
} stats;
typedef struct inventory {
int n_items;
char **wepons;
char **armor;
char **potions;
char **special;
} inventory;
typedef struct rooms {
int n_monsters;
int visited;
struct rooms *nentry;
struct rooms *sentry;
struct rooms *wentry;
struct rooms *eentry;
struct monster *monsters;
} rooms;
typedef struct monster {
int difficulty;
char *name;
char *type;
int hp;
} monster;
typedef struct dungeon {
char *name;
int n_rooms;
rooms *rm;
} dungeon;
typedef struct player {
int maxhealth;
int curhealth;
int mana;
char *class;
char *condition;
stats stats;
rooms c_room;
} player;
typedef struct game_structure {
player p1;
dungeon d;
} game_structure;
そして、これが私が問題視しているコードです。
dungeon d1 = (dungeon) malloc(sizeof(dungeon));
error: conversion to non-scalar type requested" というエラーが出ます。 なぜこのようなことが起こるのか、どなたか教えていただけませんか?
どうすればいいですか?
構造体型に何かをキャストすることはできません。 あなたが書こうとしたのは、次のようなことでしょう。
dungeon *d1 = (dungeon *)malloc(sizeof(dungeon));
の戻り値をキャストしないでください。
malloc()
をC言語で書いてください。
dungeon *d1 = malloc(sizeof(dungeon));
を隠すことなく、問題なく動作します。
#include
のバグを発見しました。
関連
-
[解決済み】valgrind - サイズ8のブロックが割り当てられた後、アドレス ---- が0バイトになる。
-
[解決済み】"Expected expression before ' { ' token"(トークンの前に期待される式)。
-
[解決済み】ポインタと整数の比較で警告が出る
-
[解決済み】 error: too few arguments to function `printDay' (C言語)
-
[解決済み】LEALアセンブリ命令は何をするのですか?
-
[解決済み】ヒープ割り当てで初期化されていない値が作成された
-
[解決済み】MPI通信でMPI_Bcastを使用する場合
-
[解決済み】なぜか。"エラー: 配列型を持つ式への代入"
-
[解決済み】Errno: 11, Resource Temporarily Unavailable(リソースが一時的に利用できない
-
[解決済み】c - 警告:関数 'printf'の暗黙の宣言
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー:cの入力の最後に期待される宣言またはステートメント
-
[解決済み】C言語で「関数の型が競合しています」と表示される、なぜ?
-
[解決済み】Cコンパイルエラーです。Idは1終了ステータスを返した
-
[解決済み】"Expected expression before ' { ' token"(トークンの前に期待される式)。
-
[解決済み】ヒープ割り当てで初期化されていない値が作成された
-
[解決済み】sizeof float (3.0) vs (3.0f)
-
[解決済み】C言語で入力が整数型かどうかチェックする
-
[解決済み】C言語のフォーマット文字列でデータ引数が使用されない [重複]。
-
[解決済み】execvp: バッドアドレスエラー
-
[解決済み] mallocの結果はキャストするのですか?