0

構造体にデータを入力し、それをバイナリ ファイルに書き込みました。問題は、読み返そうとすると、構造が正しく表示されないことです! これがコードです...

#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 ビットであり、ファイルは変換の対象ではありません (ファイルからの書き込みと読み取りのみ)。

4

0 に答える 0