Hola a todos,
Les cuento algo curioso...
Estaba trabajando en un archivo con registros de longitud fija.
Aqui viene lo curioso, estuve desde anoche pensando porque no se mostraba el contenido, revisaba el archivo y si tenia los datos.
Mi codigo era este
while(fread(&buffer,1,header.recordLength,fd) == 1)
{
printf("%d-%s-%s-%s-%s-%d\n",
buffer.recordNumber,
buffer.firsName,
buffer.lastName,
buffer.nationality,
buffer.DNI,
buffer.age);
}
Justo ahora se me ocurrio hacerlo asi, y curiosamente funciono ;-)
while(fread(&buffer,1,header.recordLength,fd) != NULL)
{
printf("%d-%s-%s-%s-%s-%d\n",buffer.recordNumber,buffer.firsName,buffer.lastName,buffer.nationality,buffer.DNI,buffer.age);
}
Entonces si tengo un registro con 30 campos, tambien tendría que hacer el printf en una sola linea? Alguien sabe porque no funciona de la primera forma (Creo que en c++ y Java si funciona así).
Saludos
yo creo que la diferencia no está en hacerlo en una linea sino en
while(fread(&buffer,1,header.recordLength,fd) == 1)
y
while(fread(&buffer,1,header.recordLength,fd) != NULL)
el salto de linea no debería afectar
Cita de: engel lex en 11 Octubre 2014, 19:28 PM
yo creo que la diferencia no está en hacerlo en una linea sino en
Se me fue al copiar y pegarXD , te cuento que las dos opciones son:
while(fread(&buffer,1,header.recordLength,fd) == 1)
Gracias a rir3760 que me explicó lo del fread en un post anterior