//次のような家計簿データkakeibo.datがテキストでかかれてあり、中身を見ると
//meat 125 1
//rice 2000 1
//juice 110 10
//となっているものとする。このデータを構造体の中に組み込んで、様々な処理に
//使用したい。そこでひとまず、このファイルを構造体の配列に読み込む関数
//void readData(FILE *fp,struct BOOK *book)を完成させたい。以下のプログラムを
//コンパイルがとおり、目的の動作をするように直接書き込みなさい。
//(どこを補うべきかも考えること)ただしkakeibo.datに書かれてある単価と数量の
//セットは100セットあることが予めわかっているものとする。
#include<stdio.h>
#include<stdlib.h>
#define FILENAME "kakeibo.dat"
struct BOOK {
char item[100];
int tanka;
int suryou;
};
void readData(FILE *fp, struct BOOK *book);
int main(void) {
struct BOOK mybook[100];
int i;
FILE *fp;
if((fp
= fopen(FILENAME
,"r"))==NULL
) { fprintf(stderr
,"%s is not found!\n",FILENAME
); }
readData(fp, mybook);
for (i = 0; i < 100 ; i++) {
printf("%s,%d x %d\n", mybook
[i
].
item, mybook
[i
].
tanka, mybook
[i
].
suryou); }
return 0;
}
void readData(FILE *fp, struct BOOK *book) {
while (fscanf(fp
, "%s %d %d", book
->item
, &book
->tanka
, &book
->suryou
) != EOF
) book++;
}
Ly/mrKHjga7jgojjgYbjgarlrrboqIjnsL/jg4fjg7zjgr9rYWtlaWJvLmRhdOOBjOODhuOCreOCueODiOOBp+OBi+OBi+OCjOOBpuOBguOCiuOAgeS4rei6q+OCkuimi+OCi+OBqAovL21lYXQgMTI1IDEKLy9yaWNlIDIwMDAgMQovL2p1aWNlIDExMCAxMAovL+OBqOOBquOBo+OBpuOBhOOCi+OCguOBruOBqOOBmeOCi+OAguOBk+OBruODh+ODvOOCv+OCkuani+mAoOS9k+OBruS4reOBq+e1hOOBv+i+vOOCk+OBp+OAgeanmOOAheOBquWHpueQhuOBqwovL+S9v+eUqOOBl+OBn+OBhOOAguOBneOBk+OBp+OBsuOBqOOBvuOBmuOAgeOBk+OBruODleOCoeOCpOODq+OCkuani+mAoOS9k+OBrumFjeWIl+OBq+iqreOBv+i+vOOCgOmWouaVsAovL3ZvaWQgcmVhZERhdGEoRklMRSAqZnAsc3RydWN0IEJPT0sgKmJvb2sp44KS5a6M5oiQ44GV44Gb44Gf44GE44CC5Lul5LiL44Gu44OX44Ot44Kw44Op44Og44KSCi8v44Kz44Oz44OR44Kk44Or44GM44Go44GK44KK44CB55uu55qE44Gu5YuV5L2c44KS44GZ44KL44KI44GG44Gr55u05o6l5pu444GN6L6844G/44Gq44GV44GE44CCCi8v77yI44Gp44GT44KS6KOc44GG44G544GN44GL44KC6ICD44GI44KL44GT44Go77yJ44Gf44Gg44GXa2FrZWliby5kYXTjgavmm7jjgYvjgozjgabjgYLjgovljZjkvqHjgajmlbDph4/jga4KLy/jgrvjg4Pjg4jjga/vvJHvvJDvvJDjgrvjg4Pjg4jjgYLjgovjgZPjgajjgYzkuojjgoHjgo/jgYvjgaPjgabjgYTjgovjgoLjga7jgajjgZnjgovjgIIKCiNpbmNsdWRlPHN0ZGlvLmg+CiNpbmNsdWRlPHN0ZGxpYi5oPgoKI2RlZmluZSBGSUxFTkFNRSAia2FrZWliby5kYXQiCgpzdHJ1Y3QgQk9PSyB7CgljaGFyIGl0ZW1bMTAwXTsKCWludCB0YW5rYTsKCWludCBzdXJ5b3U7Cn07CnZvaWQgcmVhZERhdGEoRklMRSAqZnAsIHN0cnVjdCBCT09LICpib29rKTsKCmludCBtYWluKHZvaWQpIHsKCXN0cnVjdCBCT09LIG15Ym9va1sxMDBdOwoJaW50IGk7CglGSUxFICpmcDsKCglpZigoZnAgPSBmb3BlbihGSUxFTkFNRSwiciIpKT09TlVMTCkgewoJCWZwcmludGYoc3RkZXJyLCIlcyBpcyBub3QgZm91bmQhXG4iLEZJTEVOQU1FKTsKCQlleGl0KDEpOwoJfQoKCXJlYWREYXRhKGZwLCBteWJvb2spOwoJZmNsb3NlKGZwKTsKCglmb3IgKGkgPSAwOyBpIDwgMTAwIDsgaSsrKSB7CgkJcHJpbnRmKCIlcywlZCB4ICVkXG4iLCBteWJvb2tbaV0uaXRlbSwgbXlib29rW2ldLnRhbmthLCBteWJvb2tbaV0uc3VyeW91KTsKCX0KCXJldHVybiAwOwp9Cgp2b2lkIHJlYWREYXRhKEZJTEUgKmZwLCBzdHJ1Y3QgQk9PSyAqYm9vaykgewoKCXdoaWxlIChmc2NhbmYoZnAsICIlcyAlZCAlZCIsIGJvb2stPml0ZW0sICZib29rLT50YW5rYSwgJmJvb2stPnN1cnlvdSkgIT0gRU9GKQoJCWJvb2srKzsKfQo=