Duda sobre structs en c
Publicado por gagaeloel (2 intervenciones) el 10/12/2007 14:27:31
muy wenas! soy novato en c y estoy haciendo inas cosas con structs.
El caso q me he encontrado con el siguiente problema:He declarado un struct q tiene 2 campos string.
Con strcpy asigno un string al primer campo (nombre), luego al segundo(apellido).
Pues el problema es q despues de hcaer las asignaciones en ese orden, el atributo nombre se concatena con el apellido resultando asi la ejecucion:
nombres:
pacoocap
juannauj
manuunam
jacoocaj
apellidos:
paco
nauj
unam
ocaj
------En vez de : -------
nombres:
paco
juan
manu
jaco
apellidos:
paco
nauj
unam
ocaj
--------Este es el codigo : ----------------
##################################################################################
#include <stdio.h>
struct prueba
{
char nombre[4];
char apellido[4];
};
int main (int argc, char *argv[])
{
struct prueba *p1,*p2,*p3,*p4,*lista[4];
char nombre []="paco ",nombre2 []="juan",nombre3 []="manu",nombre4 []="jaco";
char apellido[]="ocap",apellido2[]="nauj", apellido3[]="unam", apellido4[]="ocaj";
p1 = (struct prueba *) malloc (sizeof (struct prueba));
p2 = (struct prueba *) malloc (sizeof (struct prueba));
p3 = (struct prueba *) malloc (sizeof (struct prueba));
p4 = (struct prueba *) malloc (sizeof (struct prueba));
strcpy(p1->nombre,nombre),strcpy(p2->nombre,nombre2),strcpy(p3->nombre,nombre3),strcpy(p4->nombre,nombre4);
strcpy(p1->apellido,apellido),strcpy(p2->apellido,apellido2),strcpy(p3->apellido,apellido3),strcpy(p4->apellido,apellido4);
printf("nombres: ");
printf( );
printf("%s ", p1->nombre);
printf("%s ", p2->nombre);
printf("%s ", p3->nombre);
printf("%s ", p4->nombre);
printf("apellidos: ");
printf( );
printf("%s ", p1->apellido);
printf("%s ", p2->apellido);
printf("%s ", p3->apellido);
printf("%s ", p4->apellido);
free(p1),free(p2),free(p3),free(p4);
}
################
saludos!
El caso q me he encontrado con el siguiente problema:He declarado un struct q tiene 2 campos string.
Con strcpy asigno un string al primer campo (nombre), luego al segundo(apellido).
Pues el problema es q despues de hcaer las asignaciones en ese orden, el atributo nombre se concatena con el apellido resultando asi la ejecucion:
nombres:
pacoocap
juannauj
manuunam
jacoocaj
apellidos:
paco
nauj
unam
ocaj
------En vez de : -------
nombres:
paco
juan
manu
jaco
apellidos:
paco
nauj
unam
ocaj
--------Este es el codigo : ----------------
##################################################################################
#include <stdio.h>
struct prueba
{
char nombre[4];
char apellido[4];
};
int main (int argc, char *argv[])
{
struct prueba *p1,*p2,*p3,*p4,*lista[4];
char nombre []="paco ",nombre2 []="juan",nombre3 []="manu",nombre4 []="jaco";
char apellido[]="ocap",apellido2[]="nauj", apellido3[]="unam", apellido4[]="ocaj";
p1 = (struct prueba *) malloc (sizeof (struct prueba));
p2 = (struct prueba *) malloc (sizeof (struct prueba));
p3 = (struct prueba *) malloc (sizeof (struct prueba));
p4 = (struct prueba *) malloc (sizeof (struct prueba));
strcpy(p1->nombre,nombre),strcpy(p2->nombre,nombre2),strcpy(p3->nombre,nombre3),strcpy(p4->nombre,nombre4);
strcpy(p1->apellido,apellido),strcpy(p2->apellido,apellido2),strcpy(p3->apellido,apellido3),strcpy(p4->apellido,apellido4);
printf("nombres: ");
printf( );
printf("%s ", p1->nombre);
printf("%s ", p2->nombre);
printf("%s ", p3->nombre);
printf("%s ", p4->nombre);
printf("apellidos: ");
printf( );
printf("%s ", p1->apellido);
printf("%s ", p2->apellido);
printf("%s ", p3->apellido);
printf("%s ", p4->apellido);
free(p1),free(p2),free(p3),free(p4);
}
################
saludos!
Valora esta pregunta


0