Ich habe eine Zuordnung, wo ich eine Word-Datei (.doc) nehmen, Dateisystem-IO-Code zum Lesen der Datei verwenden soll die Datei in zwei Hälften teilen und jede Hälfte auf zwei separate schreiben Dateien im Binärmodus. Ich schrieb den folgenden Code und es läuft erfolgreich und produziert die zwei Dateien, sogar die Größe der Dateien sind die Hälfte des Originals. Wenn ich jedoch die Word-Datei öffne, kommen sie heraus, um beschädigt zu werden. Das funktioniert gut mit einer TXT-Datei, aber mein Lehrer sagte, es sollte für .doc und .zip-Dateien ohne Dateibeschädigung funktionieren. stimmt etwas mit meinem Code nicht? Danke für jede Hilfe, die ich wirklich schätze.Zerlegen einer Binärdatei in Datei in C ohne Korruption
#include <stdio.h>
int main (int argc, char **argv)
{
char *fileName = "1.doc";
char *buffer = "a";
int chunk;
FILE *fd;
fd = fopen (fileName, "rb");
if (fd == NULL);
ferror ("error");
fseek (fd, 0, SEEK_END);
chunk = ftell (fd)/2;
rewind (fd); //open file, get size, set chunk = to half the file, rewind back to begining of file
fread (buffer, chunk, 1, fd);
fclose (fd); //read the first half of the file into buffer
fd = fopen ("1_1.doc", "wb");
fwrite (buffer, chunk, 1, fd);
fclose (fd); //create new file, write the contents of buffer into it
fd = fopen (fileName, "rb");
fseek (fd, chunk, SEEK_SET);
fread (buffer, chunk, 1, fd);
fclose (fd); //reopen original file, go to half the file, read the remaining half of the file and store in buffer
fd = fopen ("1_2.doc", "wb");
fwrite (buffer, chunk, 1, fd);
fclose (fd); //create a new file, write the second half of the file into it
return 0;
}
Ich habe beide Varianten von
versuchtfwrite(buffer, chunk, 1, fd);
UND
fwrite(&buffer, chunk, 1, fd);
Was passiert, wenn 'fd = NULL'? (Hinweis - es wird nicht beendet). Wie viel Speicher ist für 'Puffer' reserviert? –
Ich sehe nicht, dass Sie keinen Speicher für den Puffer reservieren - daher undefiniertes Verhalten – John3136
'doc' und' zip' Dateien haben eine interne Struktur. Wenn Sie die Datei in zwei Hälften teilen, wird die Datei beschädigt und unbrauchbar.Vielleicht hast du deinen Lehrer falsch verstanden. – Ari0nhh