画像ファイルを作成する関数を製作していたところ、
C言語の構造体について分からないことが発生しため質問させていただきました。
1. main関数内で構造体のポインタを宣言して、そのポインタを関数に渡す。
2. ポインタを渡された関数内でそのポインタが示す構造体に値を代入する。
3. さらに別の 2. の関数で処理された構造体の値を表示する。
というアルゴリズムのソースコードです。この処理を実行すると 3. で構造体の値が適切に表示されません。
このソースコードのmain関数内を書き換えることなく構造体の値を適切に表示する方法を教えてください。
#include<stdio.h>
#include<stddef.h>
#include<stdlib.h>
#include<string.h>
struct GAME {
char *name; /* プレーヤー名 */
int score; /* スコア */
int max; /* 最高スコア */
};
int main(void) {
struct GAME *shooting;
func1(shooting,"Hiroshi");
func2(shooting);
return 0;
}
int func1(struct GAME *game,const char *name) {
game=(struct GAME *)malloc(sizeof(struct GAME)); /* 構造体ポインタが示す構造体を実体化する */
game->name=malloc( sizeof(char) * strlen(name) +1 );
strcpy(game->name,name);
game->score=100;
game->max=200;
return 0;
}
int func2(struct GAME *game) {
puts(game->name);
printf("Score:%d\n",game->score);
printf("Max Score:%d\n",game->max);
return 0;
}
FILE構造体を扱えるので、このソースコードのmain関数内の処理を上記のように記述しました。
コンパイル&実行環境はLinuxのgccです。コンパイルエラーはありません。よろしくお願いします