0

バイナリ マスター ファイルを新しいバイナリ ファイルにコピーしたいと考えています。このファイルには何も含まれていませんが、定義済みのサイズ (20000 行) があります。

ここで私がやっていること:

     FILE *A_Lire;
     FILE *A_Creer;

A_Lire = fopen(MASTERPath,"rb");
A_Creer = fopen(PARTPRGPath, "wb");

fseek(A_Lire,0,SEEK_END);
int end = ftell(A_Lire);

char* buf = (char*)malloc(end);

fread(buf,sizeof(char),end,A_Lire);
fwrite(buf,sizeof(char),end,A_Creer);

fclose(A_Creer);
fclose(A_Lire);

このコードは適切なサイズの新しいファイルを作成しますが、マスターのようにこの新しいファイルを使用できないため、これはまったく同じファイルではありません。何かが違う、破損している、ファイルへの書き込み方が違うのかも???

何か考えはありますか???

これはMFCコードだと思います

ありがとう、

4

1 に答える 1

2

fseek(..SEEK_END) を実行すると、開いているファイル内の位置が最後になり、fread を呼び出すたびに、最後にいるため 0 バイトが取得されます。

その後、巻き戻しを行うだけです。

fseek(A_Lire,0,SEEK_END);

int end = ftell(A_Lire);

fseek(A_Lire,0,SEEK_SET);
于 2009-11-06T16:23:44.540 に答える