架空の映画のネタバレレビュー

すみませんエラーがを直してもらってもいいですか?

: In function ‘main’
:15: error: storage size of ‘com01’ isn’t known
:15: error: storage size of ‘com02’ isn’t known
:15: error: storage size of ‘com03’ isn’t known
:17: 警告: incompatible implicit declaration of built-in function ‘strcpy’



#include <stdio.h>

typedef struct {
char code[1000];
char name[1000];
int price;

}gift;

gift gift_t;

int main(void){

struct gift com01,com02,com03;

strcpy(com01.code,"JZK-30");
strcpy(com02.name,"Jizake_tsumeawase");
strcpy(com03.price,"4500");

printf("code: %s name: %s price %d",com01.code,com02.name,com03.price);

return 0;
}

A 回答 (3件)

以下のようにしてください。

変更箇所は//追加 //修正のコメントを入れています。
#include <stdio.h>
#include <string.h> //追加

typedef struct {
char code[1000];
char name[1000];
int price;

}gift;

gift gift_t;

int main(void){

//struct gift com01,com02,com03;
gift com01,com02,com03; //修正

strcpy(com01.code,"JZK-30");
strcpy(com02.name,"Jizake_tsumeawase");
//strcpy(com03.price,"4500");
com03.price = 4500; //修正
printf("code: %s name: %s price %d",com01.code,com02.name,com03.price);

return 0;
}

-------------------------
以下実行結果です。
code: JZK-30 name: Jizake_tsumeawase price 4500
    • good
    • 1

struct gift { ... };


typedef struct gift gift_t;
または
typedef struct { ... } gift_t;

そうすると
gift_t com01, com02, com03;

ついでに
com03.price = atoi("4500"); // 誤: strcpy(com03.price,"4500");
    • good
    • 0

> typedef struct {


> char code[1000];
> char name[1000];
> int price;
> }gift;
これだと無名の構造体型の型名をgiftにしたことになる。
そうすると使うときstruct giftはおかしいので
> struct gift com01,com02,com03;
< gift com01,com02,com03;
となる。

> gift gift_t;
ギフト型の変数gift_tを定義している。
これも変だね。

< struct gift {
< char code[1000];
< char name[1000];
< int price;
< };
< typedef struct gift gift_t;
とすれば
> struct gift com01,com02,com03;
あるいは
< gift_t com01,com02,com03;
で正しく変数が定義できる。
    • good
    • 0
この回答へのお礼

課題で構造体を定義typedefを使えと書いてあるので・・・・・

以下のソースコードに書き換えてんですが。。。。

#include <stdio.h>

typedef struct {
char code[1000];
char name[1000];
int price;

}gift;

gift gift_t;

int main(void){

gift_t com01,com02,com03;

strcpy(com01.code,"JZK-30");
strcpy(com02.name,"Jizake_tsumeawase");
strcpy(com03.price,"4500");

printf("code: %s name: %s price %d",com01.code,com02.name,com03.price);

return 0;
}

お礼日時:2016/10/05 14:58

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