構造体にデータを入力し、それをバイナリ ファイルに書き込みました。問題は、読み返そうとすると、構造が正しく表示されないことです! これがコードです...
#define MAXS 30
typedef struct {
char id[50];
int pct1, pct2;
} TStudd;
int ReadStruct(FILE* f, TStudd as ){
int i=0;
while (i < MAXS && fscanf(f, "%s" , as.id) == 1)
{
fscanf (f, "%i %i", &as.pct1, &as.pct2);
i++;
}
return i;//total number of read people
}
int WriteBinary(FILE* f, TStudd as){
int pct1, pct2, i;
pct1 = as.pct1;
pct2 = as.pct2;
i = fwrite(as.id, sizeof(as.id), 1,f);
if( i != 1) return -1;
i = fwrite(&pct1, sizeof(pct1), 1,f);
if( i != 1) return -2;
i = fwrite(&pct2, sizeof(pct2), 1,f);
if( i != 1) return -3;
return 0;
}
int ReadBinary(FILE* f){
char id [50];
int pct1, pct2, i;
i = fread(id, sizeof(id), 1,f);
if( i != 1) return -1;
printf("%s", id);
i = fread(&pct1, sizeof(pct1), 1,f);
if( i != 1) return -2;
printf("%i", pct1);
i = fread(&pct2, sizeof(pct2), 1,f);
if( i != 1) return -3;
printf("%i", pct2);
return 0;
}
g = fopen(sursa, "rt");
v = ReadStruct(g, ps);
printf("%i\n", v);
f = fopen(dest, "w+b");
}
if ( ReadBinary(f, ps) < 0){
printf("Eroare scriere\n");
return 1;
}
if ( WriteBinary(f) < 0 ){
printf("Eroare citire\n");
return 1;
};
fclose(g);
fclose(f);
何を変更すればよいですか?ありがとうございました!
プラットフォームは Windows 7 64 ビットであり、ファイルは変換の対象ではありません (ファイルからの書き込みと読み取りのみ)。