Ahora si me quedo mas claro gracias master Nivel7... pero ahora me surgio otro problema, la cosa es que tengo que trabajar con listas enlasadas y tengo 3 una auto, una usuario y una arriendo, lo que necesito es hacer solo una funcion que agregue cualqueir tipo de dato a cualquier estructura y si cambio las estructuras no tenga que modificar la funcion crear, trate de hacerle unas modificaciones a tu código y me quedo asi:
Código:
#define INT 1
#define STRING 2
//**************************** Declaración de las estructuras ****************************
//Se define la estructura Auto
typedef struct Auto {
int codigo; //Código del auto
char *marca; //Marca del auto
char *modelo; //Modelo del auto
int anho; //Año del auto
int n_ejemplares; //Número de ejemplares del auto
struct Auto *next;
}Auto;
//Se define la estructura Usuario
typedef struct Usuario {
char rut[9]; //Rut del Usuario
char *nombres; //Nombres del Usiario
char *apellidos; //Apellidos del Usuario
char *direccion; //Dirección del Usuario
char *ciudad; //Ciudad del Usuario
char *pais; //País del Usuario
char telefono[9]; //Teléfono del Usuario
struct Usuario *next;
}Usuario;
//Se define la estructura Arriendo
typedef struct Arriendo {
int codigo; //Código del auto
char *marca; //Marca del auto
char *modelo; //Modelo del auto
int anho; //Año del auto
char rut[9]; //Rut arrendatario
char *nombres; //Nombres arrendatario
char *apellidos; //Apellidos Arrendatario
char fecha[9]; //Fecha en la que se arrendo
char vence[9]; //Fecha en la que vence el arriendo
struct Arriendo *next;
}Arriendo;
struct Auto *NuevoAuto;
struct Auto *PrimerAuto;
struct Auto *RecorreAuto;
struct Auto *AnteriorAuto;
struct Usuario *NuevoUsuario;
struct Usuario *PrimerUsuario;
struct Usuario *RecorreUsuario;
struct Usuario *AnteriorUsuario;
struct Arriendo *NuevoArriendo;
struct Arriendo *PrimerArriendo;
struct Arriendo *RecorreArriendo;
struct Arriendo *AnteriorArriendo;
void Crear(int tipo, char* estructura, char* dato, void* valor)
{
char *nuest;
char *prest;
char *reest;
nuest = strcat("Nuevo",estructura);
prest = strcat("Primer",estructura);
reest = strcat("Recorre",estructura);
switch(tipo)
{
case INT:
nuest->dato = ((int*)valor);
break;
case STRING:
nuest->dato = (char *)malloc(sizeof(char)*strlen((char*)valor));
strcpy(nuest->dato,(char*)valor);
break;
}
nuest->next = NULL;
if (prest == NULL)
{
prest = nuest;
reest = nuest;
}
else
{
reest->next = nuest;
}
reest = nuest;
}
Mi problema es que me dice que dato no pertenece a ninguna estructura ni a ninguna union... te agradeceria si me pudieras dar una idea de como hacerlo.
Saludos y muchisimas gracias por tu valiosa ayuda.