Bueno como comente en el otro tema, estoy teniendo un problemon con archivos, no logro hacer que me guarde en un archivo que es NOMBREARCHIVO.ART y el usuario se encarga de ingresar el nombredelarchivo.art en un string dinamico, bueno aca paso las estructuras.
Código PHP:
ELEMENTO:
typedef struct {
int solapa;
bool EsNumero;
union {
int numero;
char car;
} DatosExtra;
} Elemento;
EXPRESION:
typedef struct NodoA {
Elemento info;
NodoA * hizq;
NodoA * hder;
} nodo;
typedef nodo * Expresion;
Yo tengo que guardar una expresion, el tema es que tengo que guardar elemento por elemento para que vaya ordenado en preorden, cosa que despues lo pueda levantar igual, para eso le cargo el int solapa al elemento y le voy cargando esos numeros a la expresion en preorden.
el tema es que no se si el sizeof me va a calcular el largo en bites de ese struct con union discriminada, esto es lo que tengo:
Código PHP:
string s2;
scan(s2);
FILE * archivo;
archivo = fopen (s2,"r");
Elemento elem1;
if (archivo == NULL){
archivo = fopen (s2,"wb");
[B]save (archivo,aux);[/B] //lo comento mas abajo
fclose(archivo);
}
else
printf("YA EXISTE UN ARCHIVO CON ESE NOMBRE, Desea sobreescribilo? S = Si, N = No \n");
fflush(stdin);
scanf("%c",&opcion);
if ((opcion == 'S') || (opcion == 's')){
archivo = fopen (s2,"wb");
fwrite (&aux->info,10,1,archivo);
fclose(archivo);
}//end if
else
if ((opcion == 'N') || (opcion == 'n')){
printf("EL ARCHIVO NO SE HA GUARDADO. Escriba help para mas ayuda. \n");
fflush(stdin);
}//end if
else
printf("OPCION INCORRECTA. Escriba help para mas ayuda. \n");
fflush(stdin);
} //end if
else
printf("PARAMETRO INCORRECTO, La posicion %d no ha sido cargada. Escriba help para mas ayuda. \n",valor1);
Primero que nada no se si mi size esta bien para mi union discriminada Elemento, le puse 10.
en cuando al save que cito es asi
Código PHP:
void save (FILE *archivo, Expresion exp){
if(exp != NULL){
fwrite (&exp->info,10,1,archivo);
save (archivo,exp->hizq);
save (archivo,exp->hder);
}//end if
El tema es que no me esta guardando, no se si estoy haciendo algo mal, tampoco se si me esta funcionando el load que en este caso les iba a consultar como lo podia hacer.
Gracias por todo, espero que se entienda mi mensaje jejeje
saludos,