Programación General > C/C++
Duda con puntero
(1/1)
krnl64:
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 --- main.c typedef struct {char nombre[20];int puntos;}ITEM; void func1(ITEM *persona, int longitud){ char *nombres[]={"Fernando","Pablo"};int i; for(i=0;i<longitud;i++) { strcpy(&(*(persona+i)).nombre,*(nombres+i)); // aqui falla &(*(persona+i)).puntos=30; } int main( int argc, char *argv[]){ ITEM listaitem[]= { {"Manuel",20},{"Fernando",10} }; int i; func1(listaitem,2); for(i=0;i<2;i++) { printf("n %s %d",listaitem[i].nombre,listaitem[i].puntos); } getchar();}
Eternal Idol:
Te falta un casting y te sobra un ampersand:
--- Código: C++ ---strcpy((char*)&(*(persona+i)).nombre,*(nombres+i));(*(persona+i)).puntos=30;
Pero al menos yo jamas lo haria asi, demasiado engorroso, asi es mas simple:
--- Código: C++ ---strcpy(persona[i].nombre, nombres[i]);persona[i].puntos = 30;
krnl64:
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
Eternal Idol:
De nadas :beer:
Navegación
Ir a la versión completa