Punteros!

Iniciado por LucasNahuel, 20 Mayo 2016, 21:03 PM

0 Miembros y 1 Visitante están viendo este tema.

LucasNahuel

Hola a todos, estoy comenzando con punteros y tengo una duda, quiero pegarle un valor a un array, y luego mostrarlo. algo simple. disculpen mi pregunta tonta.. pero no me sale!
El programa

Citar

typedef struct
{
   int id;
   char name[50];
   char lastName[50];
   char email[50];
   char gender[50];
   char ip[50];

}Employee;

int main()
{
       Employee pEmployee[10];
       int indice;

       printf("Ingrese el indice donde quiere guardar los datos");
       scanf("%d",& indice);
     
       (pEmployee+indice)->id=800;
       strcpy((pEmployee+indice)->name,"name"); //creo que un error lo tengo aca, como lo estoy guardando
       strcpy((pEmployee+indice)->lastName,"lastName");
       strcpy((pEmployee+indice)->email,"email");
       strcpy((pEmployee+indice)->gender,"gender");
       strcpy((pEmployee+indice)->ip,"ip");

       ACA esta el problema, no tengo idea como mostrarlo con un printf porque por ejemplo coloco esto, aunque puede ser que el error solo sea el mencionado arriba, de como guardo los datos.

     printf("ID: %d\t NAME: %s",pEmployee[indice]->id,pEmployee[indice]->name); y ya me sale error..
}

crack81

#1
Mira te dejo este codigo corregido para que le des una mirada:

#include<stdio.h>
#include<string.h>

typedef struct
{
   int id;
   char name[50];
   char lastName[50];
   char email[50];
   char gender[50];
   char ip[50];

}Employee;

int main()
{
       Employee pEmployee[10];
       int indice;

       printf("Ingrese el indice donde quiere guardar los datos: ");
       scanf("%d",&indice);


       pEmployee[indice].id=800;
       strcpy(pEmployee[indice].name,"name"); //creo que un error lo tengo aca, como lo estoy guardando
       strcpy(pEmployee[indice].lastName,"lastName");
       strcpy(pEmployee[indice].email,"email");
       strcpy(pEmployee[indice].gender,"gender");
       strcpy(pEmployee[indice].ip,"ip");

       printf("ID: %d\t IP: %s",pEmployee[indice].id,pEmployee[indice].ip); //y ya me sale error..
       return 0;
}


En realidad no estas usando punteros, esta forma seria usando arreglos dinamicos o "punteros"

int main()
{
       Employee *pEmployee=malloc(sizeof(Employee)*10);
       int indice;

       printf("Ingrese el indice donde quiere guardar los datos: ");
       scanf("%d",&indice);


       pEmployee[indice].id=800;
       strcpy(pEmployee[indice].name,"name"); //creo que un error lo tengo aca, como lo estoy guardando
       strcpy(pEmployee[indice].lastName,"lastName");
       strcpy(pEmployee[indice].email,"email");
       strcpy(pEmployee[indice].gender,"gender");
       strcpy(pEmployee[indice].ip,"ip");

       printf("ID: %d\t IP: %s",pEmployee[indice].id,pEmployee[indice].ip); //y ya me sale error..

       free(pEmployee); //liberamos la memoria
       return 0;
}
Si C/C++ es el padre de los lenguajes entonces ASM es dios.

LucasNahuel

si, es que en la facultad me enseñaron a hacer como vos lo hiciste, pero ahora quiere que utilize punteros, y utilize el operador flecha no el punto.. pero bueno, por lo que veo no vengo bien en la facultad jaja :(

crack81

Hola la verdad es que si puedes usar el -> pero es una chorrada cuando hablamos de arreglos ya que con acceder al arreglo en forma de indice basta

Pero si quieres que tu codigo original funcione basta con que imprimas los valores asi

(pEmployee+indice)->id=800;
printf("indice %d",(pEmployee+indice)->id);
Si C/C++ es el padre de los lenguajes entonces ASM es dios.

HardForo

Voy a hacer una pregunta muy ingenua: cuál es la necesidad de usar strcpy() en este programa ?
HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *

engel lex

Estas asignando un char* const a un char*, es igual que hacer esto
int a[10];
int b[10];
//llenamos a
b=a;
b
Esto no hará nada esperado XD

Tienes que copiar la memoria de las posiciones del array
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

HardForo

Muy amable Alex lex  ;D

Aun hay (muchas) cosas que se me escapan
HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *