C/Visual C - Duda sobre structs en c

 
Vista:

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!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Duda sobre structs en c

Publicado por Nelek (816 intervenciones) el 11/12/2007 08:43:31
intenta usando punto y coma entre los distintos strcopy
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda sobre structs en c

Publicado por Tom (619 intervenciones) el 11/12/2007 17:27:14
struct prueba
{
char nombre[5];
char apellido[5];

};

Intenta aprender algo sobre cadenas de caracteres (strings) en C o tendrás más de un dolor de cabeza.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda sobre structs en c

Publicado por gagaeloel (2 intervenciones) el 11/12/2007 18:15:41
gracias! pero ya lo habia solucionado :)

ahora tengo unas dudas mas importantes
si hago llamadas recursivas a una funcion.. como puedo hacer para proteger un parametro (que no se modifique)?

estoy haciendo un ls, y tengo q ordenar por varios parametros:

Ej:
si me dan "lsbp"

Tendria q hacer lo siguiente:
primero ordenar por numero de enlaces
De los q tengan el mismo numero de enlaces, ordenar por tamaño...
etc...
Los parametros de ordenacion los meto en un array ..en plan "cola" ..

Lo que hago es crear una array de structs , en la q cada struct contenga la info de cada archivo.
Consegui ordenar por el primer parametro
Y para el segundo y sucesivos se me ocurrio hacer llamadas recursivas
Para ello a la funcion ordenar le paso:
El array.La posicion inicial del intervalo a ordenar.La posicion final del intervalo
Un array con los parametros , con la posicion del parametro por el que toca ordenar..

Luego imprimo el array ya modificado... pero el problema que comentaba al principio..es q me modifica la posicion final del array... por lo que no puedo imprimirlo correctamente..

menudo toston q largue...jejje

saludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar