Estoy tratando de leer un archivo binario en C 1 byte a la vez y después de buscar en Internet durante horas, todavía no puedo obtenerlo para recuperar nada más que basura y/o seg culpa. Básicamente, el archivo binario está en el formato de una lista que tiene 256 elementos de longitud y cada elemento es de 1 byte (un int sin signo entre 0 y 255). Estoy tratando de usar fseek y fread para saltar al "índice" dentro del archivo binario y recuperar ese valor. El código que tengo actualmente:Leyendo un archivo binario 1 byte a la vez
unsigned int buffer;
int index = 3; // any index value
size_t indexOffset = 256 * index;
fseek(file, indexOffset, SEEK_SET);
fread(&buffer, 256, 1, file);
printf("%d\n", buffer);
Ahora este código me está dando números aleatorios de basura y fallas seg. Algún consejo sobre cómo puedo hacer que esto funcione, ¿verdad?
Leer un archivo de un byte a la vez supondría una sobrecarga de E/S masiva. Un mejor enfoque sería leer todo el archivo en un búfer (ya que solo tiene 256 bytes) y procesar cada byte almacenado en el búfer de forma individual. – titaniumdecoy
¿Por qué no utilizar fgetc – Dirk
@titaniumdecoy? Creo que el Administrador de E/S almacenará en búfer las lecturas en los sistemas operativos modernos. – jww