Comment utiliser read () pour lire les données jusqu'à la fin du fichier?
Je suis en train de lire des données binaires dans un programme C avec read() mais EOF test ne fonctionne pas. Au lieu de cela, il continue de fonctionner à jamais la lecture du dernier bit du fichier.
#include <stdio.h>
#include <fcntl.h>
int main() {
//writing binary numbers to a file
int fd = open("afile", O_WRONLY | O_CREAT, 0644);
int i;
for (i = 0; i < 10; i++) {
write(fd, &i, sizeof(int));
}
close(fd);
//trying to read them until EOF
fd = open("afile", O_RDONLY, 0);
while (read(fd, &i, sizeof(int)) != EOF) {
printf("%d", i);
}
close(fd);
}
source d'informationauteur sekmet64
Vous devez vous connecter pour publier un commentaire.
read
retourne le nombre de caractères à lire. Quand il atteint la fin du fichier, il ne sera pas capable de lire plus (du tout) et il va retourner 0, pas EOF.Vous devez vérifier les erreurs. Sur certaines (commun) des erreurs que vous souhaitez appeler lire à nouveau!
Si read() renvoie -1, vous devez vérifier
errno
pour le code d'erreur. Si errno est égal soitEAGAIN
ouEINTR
vous voulez redémarrer leread()
appel, sans l'aide de son (incomplet) les valeurs de retour. (Sur les autres erreurs, peut-être vous voulez quitter le programme avec le message d'erreur approprié (à partir de strerror))Exemple: un wrapper appelé xread() à partir du code source de git