Programación General > C/C++

 como puedo quitar la funcion struct y hacer que siga funcionando?

(1/1)

ro0ck:
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:
 Hola!!

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


--- Código: C ---typedef int matriz[26][280];  struct registro {       char name[30];       int color;       int efecto;       int fondo;       int rellenoletra;       int letra;       int rellenofondo;       char archivo[8];    } R;    FILE *arch;
y deberan quedar asi


--- Código: C ---typedef int matriz[26][280]; char name[30];int color;int efecto;int fondo;int rellenoLetra;int letra;int rellenoFondo;char archivo[8]; FILE *arch; 
donde utilices a R como aqui

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

--- Código: C ---void nuevo(int x, int y){ char tecla; int pos,i; 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 ---void leerArchivo(FILE *arch){   fread(name,sizeof(char),30,arch);   fread(&color,sizeof(int),1,arch);   fread(&efecto,sizeof(int),1,arch);   fread(&fondo,sizeof(int),1,arch);   fread(&rellenoLetra,sizeof(int),1,arch);   fread(&letra,sizeof(int),1,arch);   fread(&rellenoFondo,sizeof(int),1,arch);   fread(archivo,sizeof(char),8,arch);} void escribirArchivo(FILE *arch){   fwrite(name,sizeof(char),30,arch);   fwrite(&color,sizeof(int),1,arch);   fwrite(&efecto,sizeof(int),1,arch);   fwrite(&fondo,sizeof(int),1,arch);   fwrite(&rellenoLetra,sizeof(int),1,arch);   fwrite(&letra,sizeof(int),1,arch);   fwrite(&rellenoFondo,sizeof(int),1,arch);   fwrite(archivo,sizeof(char),8,arch);}
si anteriormente tendias que hacer esto

--- Código: C ---void guardar(){   arch=fopen(R.archivo,"a+");   fwrite(&R,sizeof(struct registro),1,arch);   fclose(arch);}
ahora tendras que hacer esto

--- Código: C ---void guardar(){   arch=fopen(archivo,"a+");   escribirArchivo(arch);   fclose(arch);}
Saludos Espero y te sirva, va el archivo adjunto Modificado :suerte:

Navegación

[0] Índice de Mensajes

Ir a la versión completa