Comment lire un fichier binaire en c? (vidéo, images, texte)
Je suis en train de copier un fichier à partir d'une bibliothèque spécifié dans le répertoire en cours. Je peux copier des fichiers texte à la perfection. Tous les autres fichiers sont corrompus. Le programme détecte une feof avant qu'il ne devrait.
#include <stdio.h>
int BUFFER_SIZE = 1024;
FILE *source;
FILE *destination;
int n;
int count = 0;
int written = 0;
int main() {
unsigned char buffer[BUFFER_SIZE];
source = fopen("./library/rfc1350.txt", "r");
if (source) {
destination = fopen("rfc1350.txt", "w");
while (!feof(source)) {
n = fread(buffer, 1, BUFFER_SIZE, source);
count += n;
printf("n = %d\n", n);
fwrite(buffer, 1, n, destination);
}
printf("%d bytes read from library.\n", count);
} else {
printf("fail\n");
}
fclose(source);
fclose(destination);
return 0;
}
OriginalL'auteur Collin Price | 2010-02-21
Vous devez vous connecter pour publier un commentaire.
Êtes-vous sur une machine Windows? Essayez d'ajouter "b" à la mode chaînes de caractères dans les appels à
fopen
.De l'homme fopen(3):
OriginalL'auteur Hans W
Vous devez spécifier le
"b"
option pourfopen
:Sans elle, le fichier est ouvert dans le texte (
"t"
) de mode, et cela se traduit dans la traduction de la fin-de-ligne de caractères.OriginalL'auteur Thomas
Vous avez besoin d'ouvrir les fichiers au format binaire plutôt que du texte format. Dans vos appels à
fopen
, utilisez"rb"
et"wb"
plutôt que"r"
et"w"
respectivement.OriginalL'auteur user200783