J'essaie de lire 256 octets dans un tampon à partir d'un fichier de 65536 octets, en le traitant comme un fichier à accès aléatoire en utilisant fopen, fread, fwrite et fseek. Je ne reçois aucune erreur, mais le tampon est toujours vide après la lecture, même si le fichier n'est pas vide et que fread signale la lecture de 256 octets. Voici mon code:fread into buffer est vide malgré le fichier non vide
FILE *file = NULL;
char buffer[255];
memset(buffer, 0, sizeof(buffer));
file = fopen("BACKING_STORE.bin","r");
if(file == NULL) {
printf("Error: can't open file.\n");
return NULL;
} // end if
if(fread(buffer, 1, 256, file) != 256) {
printf("Error: reading from file failed.\n");
return NULL;
} // end if
printf("The bytes read are [%s]\n", buffer);
fclose(file);
Et pour confirmer, j'ai ouvert le fichier BACKING_STORE.bin dans un éditeur hexadécimal juste pour vous assurer que ce n'était pas vide. Voici une capture d'écran de cela:
Après l'exécution de ce programme, j'obtiens la sortie: "Les octets lus sont []" mais sans aucune erreur. Je suis assez nouveau à C, donc je suis sûr que c'est juste quelque chose de simple qui me manque.
Merci pour l'aide. :)
comportement non défini: Votre mémoire tampon est de 255 octets, mais vous avez bien lu 256. – Olaf