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
Gracias por todo, espero que se entienda mi mensaje jejeje
saludos,