[ Foro de C ]

pregunta programa pagina 102 de curso

08-Nov-2009 01:16
Roberto rrs
1 Respuestas

He observado que se invierten los valores en fread,
hasta ahora cuando lo hemos usado ha sido como
fread (temp, 1, 30, fich)
y en este programa se usa como
fread (temp, 30, 1, fich)
Mi duda es, ¿no importa el orden de 1 y 30?
(Adelanto que lo he probado de las dos maneras y el resultado es el mismo, por lo que me imagino que no influye el orden)

Mi otra duda es que he probado el programa y actualiza el titulo, pero si cierro el programa y lo vuelvo a abrir para leer la información actualizada, ya no me la muestra, y me muestra el titulo original.
¿Porque puede ser eso?

Gracias.


08-Nov-2009 22:27
Nacho Cabanes (+32)

En cuanto a:

fread (temp, 1, 30, fich)

y

fread (temp, 30, 1, fich)

la diferencia es sólo "a nivel conceptual": una de las órdenes lee un bloque de 30 bytes de tamaño, mientras que la otra lee 30 bloques de un byte. El resultado es el mismo.

En otros lenguajes se indica simplemente la cantidad de bytes a leer (por ejemplo 60) en vez de la cantidad de bloques (por ejemplo 30) y el tamaño de cada uno (por ejemplo 2 bytes). Quizá el motivo de diseño de los creadores de C fuera intentar hacer que el código fuera un poco más legible, indicando mejor la intención del programador, o quizá ayudar a que el compilador pudiera optimizar un poco más en un caso o en otro.

Pero insisto, para leer un array que contenga 30 datos de tipo "short" (2 bytes en muchos sistemas) se podría hacer con 2,30 (que parece lo más natural) o con 1,60 (60 datos de 1 byte) o con 60,1 (1 bloque de 60 bytes) o incluso con "cosas más raras" como 4x15 (que conceptualmente no tendría sentido... pero debería funcionar).






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)