[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