ayuda con un ejercicio plssssss
kabros tengo un dilema kon un ejercicios en estructuras con punteros
la kosa es k tengo estas estructuras
struct Persona{
char *nombre, *apellido, *sexo, *rol, *ciudad;
int edad;
};
struct Registro{
char *tipodevinculo; //asistente, organización, expositor.
char *institucion; //universidad, instituto, particular.
struct Persona *persona;
}
int main(){
struct Registro *listado=NULL; //Este puntero me servirá para llevar el listado de
//registros
struct Registro nuevo[100];
return 0;
}
la kosa es k al guardar los primeros datos lo hace bn y lo guarda en el archivo, pero al guardar por segunda vez el campo nombre de la estructura Persona me arroja un error de memoria "la memoria no se puede written"
les envio mi codigo para k me digan k tal y si me pueden decir kual es mi error porfavor, y diskulpen por lo tonto k puede ser la pregunta pero recien estoy empezando en esto de la programacion
void crearnodo(struct Registro nuevo[], FILE *fp)
{
int i=0,opc;
char b[100];
do{
printf("nn");
printf(" Ingrese tipo de vinculo (Asistente, Organizacion, Expositor): ");
scanf("%s", b);
nuevo[i].tipvinculo=(char*)malloc(sizeof(char)*(strlen(b)+1));
strcpy(nuevo[i].tipvinculo,b);
printf(" Ingrese Institucion (universidad, Instituto o particular): ");
scanf("%s", b);
nuevo[i].tipvinculo=(char*)malloc((strlen(b)+1)*sizeof(char));
strcpy(nuevo[i].tipvinculo,b);
nuevo->persona=(struct Persona*)malloc(100*sizeof(struct Persona));
printf(" Ingrese Nombre: ");
scanf("%s", b);
nuevo[i].persona->nombre=(char*)malloc((strlen(b)+1)*sizeof(char));
strcpy(nuevo[i].persona->nombre,b);
printf(" Ingrese Apellido: ");
scanf("%s", b);
nuevo[i].persona->apellido=(char*)malloc((strlen(b)+1)*sizeof(char));
strcpy(nuevo[i].persona->apellido,b);
printf(" Ingrese Sexo: ");
scanf("%s", b);
nuevo[i].persona->sexo=(char*)malloc((strlen(b)+1)*sizeof(char));
strcpy(nuevo[i].persona->sexo,b);
printf(" Ingrese ROL: ");
scanf("%s", b);
nuevo[i].persona->rol=(char*)malloc((strlen(b)+1)*sizeof(char));
strcpy(nuevo[i].persona->rol,b);
printf(" Ingrese Ciudad: ");
scanf("%s", b);
nuevo[i].persona->ciudad=(char*)malloc((strlen(b)+1)*sizeof(char));
strcpy(nuevo[i].persona->ciudad,b);
printf(" Ingrese Edad: ");
scanf("%d",&nuevo[i].persona->edad);
printf(" Continuar Si(1) No(0): ");
scanf("%d",&opc);
fprintf(fp,"%s : %s : %s : %s : %s : %s : %s : %d n",nuevo[i].tipvinculo,nuevo[i].tipvinculo,nuevo[i].persona->nombre,nuevo[i].persona->apellido,nuevo[i].persona->sexo,nuevo[i].persona->rol,nuevo[i].persona->ciudad,nuevo[i].persona->edad);
i++;
}while(opc==1);
}
int main(){
struct Registro *listado=NULL, nuevo[100];
FILE *pf;
char *opc;
int i;
menu(opc);
if(!(pf=fopen("cliente.txt","w+")))
printf("error file");
switch(*opc){
case '1':
crearnodo(nuevo, pf);
break;
case '2':
la kosa es k tengo estas estructuras
struct Persona{
char *nombre, *apellido, *sexo, *rol, *ciudad;
int edad;
};
struct Registro{
char *tipodevinculo; //asistente, organización, expositor.
char *institucion; //universidad, instituto, particular.
struct Persona *persona;
}
int main(){
struct Registro *listado=NULL; //Este puntero me servirá para llevar el listado de
//registros
struct Registro nuevo[100];
return 0;
}
la kosa es k al guardar los primeros datos lo hace bn y lo guarda en el archivo, pero al guardar por segunda vez el campo nombre de la estructura Persona me arroja un error de memoria "la memoria no se puede written"
les envio mi codigo para k me digan k tal y si me pueden decir kual es mi error porfavor, y diskulpen por lo tonto k puede ser la pregunta pero recien estoy empezando en esto de la programacion
void crearnodo(struct Registro nuevo[], FILE *fp)
{
int i=0,opc;
char b[100];
do{
printf("nn");
printf(" Ingrese tipo de vinculo (Asistente, Organizacion, Expositor): ");
scanf("%s", b);
nuevo[i].tipvinculo=(char*)malloc(sizeof(char)*(strlen(b)+1));
strcpy(nuevo[i].tipvinculo,b);
printf(" Ingrese Institucion (universidad, Instituto o particular): ");
scanf("%s", b);
nuevo[i].tipvinculo=(char*)malloc((strlen(b)+1)*sizeof(char));
strcpy(nuevo[i].tipvinculo,b);
nuevo->persona=(struct Persona*)malloc(100*sizeof(struct Persona));
printf(" Ingrese Nombre: ");
scanf("%s", b);
nuevo[i].persona->nombre=(char*)malloc((strlen(b)+1)*sizeof(char));
strcpy(nuevo[i].persona->nombre,b);
printf(" Ingrese Apellido: ");
scanf("%s", b);
nuevo[i].persona->apellido=(char*)malloc((strlen(b)+1)*sizeof(char));
strcpy(nuevo[i].persona->apellido,b);
printf(" Ingrese Sexo: ");
scanf("%s", b);
nuevo[i].persona->sexo=(char*)malloc((strlen(b)+1)*sizeof(char));
strcpy(nuevo[i].persona->sexo,b);
printf(" Ingrese ROL: ");
scanf("%s", b);
nuevo[i].persona->rol=(char*)malloc((strlen(b)+1)*sizeof(char));
strcpy(nuevo[i].persona->rol,b);
printf(" Ingrese Ciudad: ");
scanf("%s", b);
nuevo[i].persona->ciudad=(char*)malloc((strlen(b)+1)*sizeof(char));
strcpy(nuevo[i].persona->ciudad,b);
printf(" Ingrese Edad: ");
scanf("%d",&nuevo[i].persona->edad);
printf(" Continuar Si(1) No(0): ");
scanf("%d",&opc);
fprintf(fp,"%s : %s : %s : %s : %s : %s : %s : %d n",nuevo[i].tipvinculo,nuevo[i].tipvinculo,nuevo[i].persona->nombre,nuevo[i].persona->apellido,nuevo[i].persona->sexo,nuevo[i].persona->rol,nuevo[i].persona->ciudad,nuevo[i].persona->edad);
i++;
}while(opc==1);
}
int main(){
struct Registro *listado=NULL, nuevo[100];
FILE *pf;
char *opc;
int i;
menu(opc);
if(!(pf=fopen("cliente.txt","w+")))
printf("error file");
switch(*opc){
case '1':
crearnodo(nuevo, pf);
break;
case '2':
hace la tarea solo conchetumare te voy a rajar en el control el martes pajero conchetumare.