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
Ir a la versión completa