Estoy tratando de leer datos binarios en un programa C con read() pero la prueba EOF no funciona. En cambio, sigue corriendo por siempre leyendo el último bit del archivo.¿Cómo se usa read() para leer datos hasta el final del archivo?
#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);
}
No es el problema imediate (leer devuelve 0, no EOF) pero es probable que debe adquirir el hábito de compilar con gcc -Wall', tomar nota de las advertencias (y fijarlos!), y '#include' cuando se usa 'read' /' write'. –
gracias por el consejo, que tienen que incluirse en el código principal, donde lo que necesitaba esto, pero va a usar el -Wall también a partir de ahora :) – sekmet64