C のバイナリ ファイルでスタクトを使用するのに苦労しています。人々の構造体のファイルを読み込んでいます。各人には属性 is_a_winner、is_runner_up is_a_winner が true の場合は賞品フィールドにゴールドを追加する必要があります。is_runner_up が true の場合はシルバーを追加し、それ以外の場合はブロンズを追加します。一部の構造体では機能しますが、他の構造体では機能しません。ファイル内の「カーソル」の位置に関係していると思います。
struct prizelist{
char name[10];
int is_a_winner;
int is_runner_up;
int age;
char prize[20];
};
void addPrize() {
FILE *fp;
if ((fp = fopen("prize.out", "rb+"))!=NULL) {
size_t itemSize = sizeof(struct prizelist);
struct prizelist item;
fread(&item,1,itemSize, fp);
while (!feof(fp)) {
if (item.is_a_winner) {
strcpy( item.prize, "Gold" );
} else if (item.is_runner_up) {
strcpy( item.prize, "Silver" );
} else {
strcpy( item.prize, "Bronze" );
}
fseek(fp, itemSize, SEEK_CUR);
fwrite(&item, itemSize, 1, fp);
fread(&item,1,itemSize, fp);
}
fclose(fp);
}
}