[C con Clase] Una pequeña duda con los ficheros

Marcos Collado Martín marquitos.mcm en gmail.com
Mie Abr 25 21:36:05 CEST 2012


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?
Muchas Gracias ^^





El 25 de abril de 2012 18:12, Salvador Pozo <salvador en conclase.net>escribió:

> El pasado 2012-04-25 15:55:45, Marcos escribió:
>
> M> Otra pregunta, es posible hacer esta funcion para varias estructuras, no
> M> solo stIndice? Esque no se me ocurre nada "razonable"
>
> void Intercambia(FILE *fi, long iz, long de)
> {
>   stIndice reg1, reg2;
>
>   fseek(fi, iz*sizeof(stIndice), SEEK_SET);
>   fread(&reg1, sizeof(stIndice), 1, fi);
>   fseek(fi, de*sizeof(stIndice), SEEK_SET);
>   fread(&reg2, sizeof(stIndice), 1, fi);
>   fseek(fi, iz*sizeof(stIndice), SEEK_SET);
>   fwrite(&reg2, sizeof(stIndice), 1, fi);
>   fseek(fi, de*sizeof(stIndice), SEEK_SET);
>   fwrite(&reg1, sizeof(stIndice), 1, fi);
> }
>
> Se puede generalizar más la función, añadiendo otro parámetro que indique
> el tamaño del registro. Por ejemplo:
>
> ----8<------
> void Intercambia(FILE *fi, long iz, long de, long bytesporregistro)
> {
>   void *reg1;
>   void *reg2;
>
>   reg1 = malloc(bytesporregistro);
>   reg2 = malloc(bytesporregistro);
>
>   fseek(fi, iz*bytesporregistro, SEEK_SET);
>   fread(&reg1, bytesporregistro, 1, fi);
>   fseek(fi, de*bytesporregistro, SEEK_SET);
>   fread(&reg2, bytesporregistro, 1, fi);
>   fseek(fi, iz*bytesporregistro, SEEK_SET);
>   fwrite(&reg2, bytesporregistro, 1, fi);
>   fseek(fi, de*bytesporregistro, SEEK_SET);
>   fwrite(&reg1, bytesporregistro, 1, fi);
>
>   free(reg1);
>   free(reg2);
> }
> ----8<------
>
> La llamada a esta función sería algo así:
>
> Intercambia(fichero, a, b, sizeof(stIndice));
>
> Una sugerencia: si vas a cortar y pegar desde una página web, para evitar
> que salgan "cosas raras", usa un formato de texto plano para los mensajes.
> De este modo no se copian las hojas de estilo ni los enlaces. Además de que
> se verá mejor el mensaje, se aligera mucho el tamaño.
>
> Hasta pronto.
>
> --
> Salvador Pozo (Administrador)
> mailto:salvador en conclase.net
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20120425/8abbcb06/attachment.html>


Más información sobre la lista de distribución Cconclase