/*(問題文)ファイルgifts.datからデータを読み込み、構造体のポインタ拝謁にデータを格納する。この際、利用する分だけ動的にメモリを確保する。読み込んだ結果は、gifts.datとは別のファイルに出力せよ。(ファイル名は自由)また、入力ファイル名を標準入力から指定できるようにせよ。
gifts.dat
JZK-30 jizake_tsumeawase 4500
BSP-15 Body_soap_set 3000
BT-200 Bath_towel_set 2500
TEA-20 koutya_tsumeawase 5000
実行例:
データ数を入力してください:4
ファイル名を入力してください:gifts.dat
表示形式変換後ファイルに出力しました
以下自分で書いたソースコード、ファイル指定してファイルを開こうとしたところがセグメンテーション違反になっていてどうすればいいか分かりません。できれば書いたコードの追加、最小限の修正で教えていただきたいです。*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define max 50
typedef struct GIFT{
char code[max];
char name[max];
int price;
}f;
int main()
{
FILE *fp;
FILE *afp;
f *gift[10];
char a[max],b[max],c[max];
int d,e,i,j;
afp
= fopen("presents","w"); if(fp == NULL){
return 1;
}
if(afp == NULL){
return 1;
}
for(i = 0; i < d; i++)
{
fscanf(fp
,"%s %s %d",b
,c
,&e
) != EOF
;
gift
[i
] = (f
*)malloc(sizeof(f
)*(d
+1));
gift[i]->price = e;
fprintf(afp
,"code: %s\n name: %s\n price: %d\n",gift
[i
]->code
, gift
[i
]->name
, gift
[i
]->price
);
}
printf("表示形式変換後ファイルに出力しました.\n");
for(j = 0; j < d; j++)
{
}
return 0;
}
LyrvvIjllY/poYzmlofvvInjg5XjgqHjgqTjg6tnaWZ0cy5kYXTjgYvjgonjg4fjg7zjgr/jgpLoqq3jgb/ovrzjgb/jgIHmp4vpgKDkvZPjga7jg53jgqTjg7Pjgr/mi53orIHjgavjg4fjg7zjgr/jgpLmoLzntI3jgZnjgovjgILjgZPjga7pmpvjgIHliKnnlKjjgZnjgovliIbjgaDjgZHli5XnmoTjgavjg6Hjg6Ljg6rjgpLnorrkv53jgZnjgovjgILoqq3jgb/ovrzjgpPjgaDntZDmnpzjga/jgIFnaWZ0cy5kYXTjgajjga/liKXjga7jg5XjgqHjgqTjg6vjgavlh7rlipvjgZvjgojjgILvvIjjg5XjgqHjgqTjg6vlkI3jga/oh6rnlLHvvInjgb7jgZ/jgIHlhaXlipvjg5XjgqHjgqTjg6vlkI3jgpLmqJnmupblhaXlipvjgYvjgonmjIflrprjgafjgY3jgovjgojjgYbjgavjgZvjgojjgIIKCmdpZnRzLmRhdAoKSlpLLTMwIGppemFrZV90c3VtZWF3YXNlIDQ1MDAKQlNQLTE1IEJvZHlfc29hcF9zZXQgMzAwMApCVC0yMDAgQmF0aF90b3dlbF9zZXQgMjUwMApURUEtMjAga291dHlhX3RzdW1lYXdhc2UgNTAwMAoK5a6f6KGM5L6L77yaCuODh+ODvOOCv+aVsOOCkuWFpeWKm+OBl+OBpuOBj+OBoOOBleOBhO+8mu+8lArjg5XjgqHjgqTjg6vlkI3jgpLlhaXlipvjgZfjgabjgY/jgaDjgZXjgYTvvJpnaWZ0cy5kYXQK6KGo56S65b2i5byP5aSJ5o+b5b6M44OV44Kh44Kk44Or44Gr5Ye65Yqb44GX44G+44GX44GfCgrku6XkuIvoh6rliIbjgafmm7jjgYTjgZ/jgr3jg7zjgrnjgrPjg7zjg4njgIHjg5XjgqHjgqTjg6vmjIflrprjgZfjgabjg5XjgqHjgqTjg6vjgpLplovjgZPjgYbjgajjgZfjgZ/jgajjgZPjgo3jgYzjgrvjgrDjg6Hjg7Pjg4bjg7zjgrfjg6fjg7PpgZXlj43jgavjgarjgaPjgabjgYTjgabjganjgYbjgZnjgozjgbDjgYTjgYTjgYvliIbjgYvjgorjgb7jgZvjgpPjgILjgafjgY3jgozjgbDmm7jjgYTjgZ/jgrPjg7zjg4njga7ov73liqDjgIHmnIDlsI/pmZDjga7kv67mraPjgafmlZnjgYjjgabjgYTjgZ/jgaDjgY3jgZ/jgYTjgafjgZnjgIIqLwojaW5jbHVkZTxzdGRpby5oPgojaW5jbHVkZTxzdGRsaWIuaD4KI2luY2x1ZGU8c3RyaW5nLmg+CiNkZWZpbmUgbWF4IDUwCnR5cGVkZWYgc3RydWN0IEdJRlR7CiAgY2hhciBjb2RlW21heF07CiAgY2hhciBuYW1lW21heF07CiAgaW50IHByaWNlOwoKfWY7CgppbnQgbWFpbigpCnsKICBGSUxFICpmcDsKICBGSUxFICphZnA7CiAgZiAqZ2lmdFsxMF07CiAgY2hhciBhW21heF0sYlttYXhdLGNbbWF4XTsKICBpbnQgZCxlLGksajsKCiAgcHJpbnRmKCLjg4fjg7zjgr/mlbDjgpLlhaXlipvjgZfjgabjgY/jgaDjgZXjgYQ6Iik7CiAgc2NhbmYoIiVkXG4iLGQpOwogIHByaW50Zigi44OV44Kh44Kk44Or5ZCN44KS5oyH5a6a44GX44Gm44GP44Gg44GV44GEOiIpOwogIHNjYW5mKCIlc1xuIiwgYSk7CgoKICBmcCA9IGZvcGVuKGEsInIiKTsKICBhZnAgPSBmb3BlbigicHJlc2VudHMiLCJ3Iik7ICAKICBpZihmcCA9PSBOVUxMKXsKICAgIHByaW50Zigi44OV44Kh44Kk44Or44GM6ZaL44GR44G+44Gb44KT44Gn44GX44GfLlxuIik7CiAgICByZXR1cm4gMTsKICB9CiAgaWYoYWZwID09IE5VTEwpewogICAgcHJpbnRmKCLjg5XjgqHjgqTjg6vjgYzplovjgZHjgb7jgZvjgpPjgafjgZfjgZ8uXG4iKTsKICAgIHJldHVybiAxOwogIH0KIAoKICBmb3IoaSA9IDA7IGkgPCBkOyBpKyspCiAgICB7CiAgICAgIGZzY2FuZihmcCwiJXMgJXMgJWQiLGIgLGMgLCZlKSAhPSBFT0Y7CgogICAgICBnaWZ0W2ldID0gKGYqKW1hbGxvYyhzaXplb2YoZikqKGQrMSkpOwoKICAgICAgc3RyY3B5KGdpZnRbaV0tPmNvZGUsYik7CiAgICAgIHN0cmNweShnaWZ0W2ldLT5uYW1lLGMpOwogICAgICBnaWZ0W2ldLT5wcmljZSA9IGU7CgogICAgICBmcHJpbnRmKGFmcCwiY29kZTogJXNcbiBuYW1lOiAlc1xuIHByaWNlOiAlZFxuIixnaWZ0W2ldLT5jb2RlLCBnaWZ0W2ldLT5uYW1lLCBnaWZ0W2ldLT5wcmljZSk7CgogCgogICAgfQoKICBwcmludGYoIuihqOekuuW9ouW8j+WkieaPm+W+jOODleOCoeOCpOODq+OBq+WHuuWKm+OBl+OBvuOBl+OBny5cbiIpOwoKICBmb3IoaiA9IDA7IGogPCBkOyBqKyspCiAgICB7CiAgICAgIGZyZWUoZ2lmdFtqXSk7CgogICAgfQoKICBmY2xvc2UoZnApOwogIGZjbG9zZShhZnApOwoKCiAgcmV0dXJuIDA7Cn0K