[C con Clase] Una pequeña duda con los ficheros
Steven Davidson
srd4121 en njit.edu
Mie Abr 25 23:38:05 CEST 2012
Hola Marcos,
On 4/25/2012 3:36 PM, Marcos Collado Martín wrote:
> Gracias, ahora otra duda parecida, perdona soy un poco pesado:
>
> He intentado hacer algo parecido a lo que acabas de hacer ahora, pero
> con la función:
> http://paste2.org/p/1995011
>
> Algo así he hecho:
> http://paste2.org/p/1995009
>
> Es una replica a lo como lo hicistes tu en la otra función, pero
> claro ahora el ind. hace que no funcione, sabrías como hacerlo?
>
Me temo que Salvador introdujo un mismo error al "copiar y pegar" :)
Debería ser:
fseek( fi, iz*bytesporregistro, SEEK_SET );
fread( reg1, bytesporregistro, 1, fi );
fseek( fi, de*bytesporregistro, SEEK_SET );
fread( reg2, bytesporregistro, 1, fi );
ya que 'reg1' y'reg2' son punteros.
En cuanto al código que has intentado desarrollar, escribes:
fread( &ind, bytesPorRegistro, 1, fichero );
strcpy( buffer, ind.tipo );
La primera corrección es,
fread( ind, bytesPorRegistro, 1, fichero );
Sin embargo, el otro error que tienes involucra el uso de 'ind'. En
primer lugar, esta variable es un puntero, por lo que deberías estar
accediendo a la información con * o en este caso con ->. En segundo
lugar, recuerda que 'ind' es un puntero genérico, pero quieres usarlo
como un puntero a una estructura. Por lo tanto, necesitarás realizar un
cásting, como por ejemplo,
strcpy( buffer, ((stDatos *)ind)->tipo );
O si ya sabes el tipo de dato de antemano, entonces usa la estructura
directamente y no un puntero genérico.
Espero haber aclarado la duda.
Steven
Más información sobre la lista de distribución Cconclase