ダウンロードアクセラレータを書いています。したがって、Web サーバーからファイルを n 個の部分にダウンロードします。ここで、ファイルを 1 つのファイルにマージしたいと考えています。そこで、次のコードを使用します。また、ファイル名は正しい順序になっています。しかし、取得している出力ファイルは、元のダウンロード ファイルとは異なります。エラーがどこにあるのか教えていただけますか?C
int cbd_merge_files(const char** filenames, int n, const char* final_filename) {
FILE* fp = fopen(final_filename, "wb");
if (fp == NULL) return 1;
char buffer[4097];
for (int i = 0; i < n; ++i) {
const char* fname = filenames[i];
FILE* fp_read = fopen(fname, "rb");
if (fp_read == NULL) return 1;
int n;
while ((n = fread(buffer, sizeof(char), 4096, fp_read))) {
int k = fwrite(buffer, sizeof(char), n, fp);
if (!k) return 1;
}
fclose(fp_read);
}
fclose(fp);
return 0;
}
さらにいくつかの詳細を追加します。「cat *.part > final.dmg」を実行でき、final.dmg が機能し、元と同じであるため、エラーはパーティショニングにはありません。