SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: krnl64 en Martes 15 de Septiembre de 2009, 18:25

Título: Duda con puntero
Publicado por: krnl64 en Martes 15 de Septiembre de 2009, 18:25
Hola amigos, tengo un código que me está dando problemas.
Tengo un array de estructuras y quiero modificarlo dentro de una función por medio de punteros.
No entiendo por qué lo hago mal. Haber si pueden hecharme un cable, gracias

Código: C
  1.  
  2.  
  3. main.c
  4.  
  5. typedef struct
  6. {
  7. char nombre[20];
  8. int puntos;
  9. }ITEM;
  10.  
  11.  
  12. void func1(ITEM *persona, int longitud)
  13. {
  14.  
  15. char *nombres[]={"Fernando","Pablo"};
  16. int i;
  17.    
  18.         for(i=0;i<longitud;i++)
  19.         {
  20.                strcpy(&(*(persona+i)).nombre,*(nombres+i));  // aqui falla
  21.                 &(*(persona+i)).puntos=30;
  22.         }
  23.  
  24. int main( int argc, char *argv[])
  25. {
  26.    
  27.  ITEM listaitem[]=
  28.  {
  29.  {"Manuel",20},{"Fernando",10}
  30.  };
  31.  
  32.  int i;
  33.  
  34.     func1(listaitem,2);
  35.  
  36.    
  37.     for(i=0;i<2;i++)
  38.     {
  39.         printf("n %s %d",listaitem[i].nombre,listaitem[i].puntos);
  40.     }
  41.    
  42.    
  43. }
  44.  
  45.  
Título: Re: Duda con puntero
Publicado por: Eternal Idol en Martes 15 de Septiembre de 2009, 19:15
Te falta un casting y te sobra un ampersand:
Código: C++
  1. strcpy((char*)&(*(persona+i)).nombre,*(nombres+i));
  2. (*(persona+i)).puntos=30;
  3.  
 
Pero al menos yo jamas lo haria asi, demasiado engorroso, asi es mas simple:
Código: C++
  1. strcpy(persona[i].nombre, nombres[i]);
  2. persona[i].puntos = 30;
  3.  
Título: Re: Duda con puntero
Publicado por: krnl64 en Martes 15 de Septiembre de 2009, 19:32
Vaya, se me olvidó hacer el cast.
El ampersand era involuntario(copie la linea de arriba y le borre el .nombre).
Llevas razón, es engorroso de leer jeje. Suelo usar la otra sintaxis, pero en este programilla use punteros para evitar
que se me olvidaran.
Muchas  Gracias
Título: Re: Duda con puntero
Publicado por: Eternal Idol en Martes 15 de Septiembre de 2009, 20:56
De nadas  :beer: