• Jueves 2 de Mayo de 2024, 02:08

Autor Tema:  como puedo quitar la funcion struct y hacer que siga funcionando?  (Leído 1528 veces)

ro0ck

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
como puedo quitar la funcion struct y hacer que siga funcionando?
« en: Jueves 26 de Abril de 2012, 05:19 »
0
mira este es mi codigo  ya funciona pero elproblema es cuando es que elprofe no no s ha enseñado la funcion struct no quiere que la usemos y no se como quitarsela y siga funcionado :/

droezva

  • Nuevo Miembro
  • *
  • Mensajes: 23
    • Ver Perfil
Re:como puedo quitar la funcion struct y hacer que siga funcionando?
« Respuesta #1 en: Jueves 26 de Abril de 2012, 10:30 »
0
 Hola!!

Lo que tienes que hacer es extraer las variables de struct y practicamente quedaran como globales

Código: C
  1. typedef int matriz[26][280];
  2.  
  3.  struct registro {
  4.        char name[30];
  5.        int color;
  6.        int efecto;
  7.        int fondo;
  8.        int rellenoletra;
  9.        int letra;
  10.        int rellenofondo;
  11.        char archivo[8];
  12.  
  13.    } R;
  14.  
  15.    FILE *arch;

y deberan quedar asi

Código: C
  1. typedef int matriz[26][280];
  2.  
  3. char name[30];
  4. int color;
  5. int efecto;
  6. int fondo;
  7. int rellenoLetra;
  8. int letra;
  9. int rellenoFondo;
  10. char archivo[8];
  11.  
  12. FILE *arch;
  13.  

donde utilices a R como aqui
Código: C
  1. void nuevo(int x, int y)
  2. {
  3.  char tecla;
  4.  int pos,i;
  5.  R.archivo[0]='\x0';

Solamente usaras archivo
Código: C
  1. void nuevo(int x, int y)
  2. {
  3.  char tecla;
  4.  int pos,i;
  5.  archivo[0]='\x0';

ahora el detalle es que como tus variables ya no estan dentro del struct y son practicamente individuales, entonces las tienes que ir guardando una por una dentro del archivo y de igual manera irlas leyendo, lo que muy bien se puede colocar dentro de unos procedimientos, y asi nada mas llamarlos cuando los necesites.

Código: C
  1. void leerArchivo(FILE *arch)
  2. {
  3.    fread(name,sizeof(char),30,arch);
  4.    fread(&color,sizeof(int),1,arch);
  5.    fread(&efecto,sizeof(int),1,arch);
  6.    fread(&fondo,sizeof(int),1,arch);
  7.    fread(&rellenoLetra,sizeof(int),1,arch);
  8.    fread(&letra,sizeof(int),1,arch);
  9.    fread(&rellenoFondo,sizeof(int),1,arch);
  10.    fread(archivo,sizeof(char),8,arch);
  11. }
  12.  
  13. void escribirArchivo(FILE *arch)
  14. {
  15.    fwrite(name,sizeof(char),30,arch);
  16.    fwrite(&color,sizeof(int),1,arch);
  17.    fwrite(&efecto,sizeof(int),1,arch);
  18.    fwrite(&fondo,sizeof(int),1,arch);
  19.    fwrite(&rellenoLetra,sizeof(int),1,arch);
  20.    fwrite(&letra,sizeof(int),1,arch);
  21.    fwrite(&rellenoFondo,sizeof(int),1,arch);
  22.    fwrite(archivo,sizeof(char),8,arch);
  23. }

si anteriormente tendias que hacer esto
Código: C
  1. void guardar()
  2. {
  3.    arch=fopen(R.archivo,"a+");
  4.    fwrite(&R,sizeof(struct registro),1,arch);
  5.    fclose(arch);
  6. }

ahora tendras que hacer esto
Código: C
  1. void guardar()
  2. {
  3.    arch=fopen(archivo,"a+");
  4.    escribirArchivo(arch);
  5.    fclose(arch);
  6. }

Saludos Espero y te sirva, va el archivo adjunto Modificado :suerte:
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
« última modificación: Jueves 26 de Abril de 2012, 12:36 por droezva »