ayuda con un ejercicio plssssss

walailo
09 de Noviembre del 2009
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':

lenin
09 de Noviembre del 2009
hace la tarea solo conchetumare te voy a rajar en el control el martes pajero conchetumare.

Smartasshole
09 de Noviembre del 2009
Bueeno buenooo mira animal, lo que pasa es que estas usando el mismo pointer para varias variables a la vez. Pero como c te va a ocurrir hacer esto grandismo asno por favor ..