Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Unos podataka u strukturu uz pomoc pointera

[es] :: C/C++ programiranje :: C/C++ za početnike :: Unos podataka u strukturu uz pomoc pointera

[ Pregleda: 2493 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

MPesic
Beograd

Član broj: 164946
Poruke: 124
*.bvcom.net.



+25 Profil

icon Unos podataka u strukturu uz pomoc pointera15.06.2013. u 03:07 - pre 132 meseci
Poceo sam da ucim C ali sam zapeo oko jednog problema.
Naime hteo bih da unesem podatke koji su definisani u strukturi i da kasnije ispisem rezultat. Stigao sam do ovog koda.

Code:
#include <stdio.h>
typedef struct student {
    char ime[30];
    char prezime[30];
    int godine;
}Student;

main() {
    Student zp[3];
    Student *p;
    int i;

    p = &zp;

    for(i=0; i<2; i++) {
        printf("Unesite ime, prezime i godiste za studenta %d:", i+1);
        scanf("%s%s%d", &p->ime, &p->prezime, &p->godine);
    }

    for(i=0; i<2; i++) {
        printf("Student %d: %s %s %d\n", i+1, p->ime, p->prezime, p->godine);
        
    }
    system("PAUSE");
}


E sad da li me moze neko uputiti kako dalje posto sam pokusavao varijantama p[ i ]->ime ali to ne daje zeljene rezultate. Znam ja kako bi to resio bez upotrebe pointera na strukturu, ali me interesuje resenje na ovakav nacin.
 
Odgovor na temu

Dexic
ASP

Član broj: 253999
Poruke: 3837



+1376 Profil

icon Re: Unos podataka u strukturu uz pomoc pointera15.06.2013. u 05:05 - pre 132 meseci
p = &zp; // p pokazuje na prvi clan niza
p++; // uveca p za sizeof(*p), tj. p sada ukazuje na drugi clan niza zp

Ubaci samo
p++;
u for petlju posle ucitavanja/ispisivanja.
 
Odgovor na temu

MPesic
Beograd

Član broj: 164946
Poruke: 124
*.bvcom.net.



+25 Profil

icon Re: Unos podataka u strukturu uz pomoc pointera15.06.2013. u 18:09 - pre 132 meseci
Ako sam te dobro razumeo, a mislim da jesam potrebno je ovako da izmenim kod u obe for petlje da izgleda ovako

Code:
    for(i=0; i<2; i++) {
        printf("Student %d: %s %s %d\n", i+1, p->ime, p->prezime, p->godine);
        p++;
    }


Medjutim ni to mi ne daje zeljene rezultate vec mi ispise nesto skroz random nakon unosa podataka.
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
185.13.11.*



+395 Profil

icon Re: Unos podataka u strukturu uz pomoc pointera15.06.2013. u 18:55 - pre 132 meseci
Nema potrebe da scanf-u prosledjujes &p->ime i &p->prezime posto je char[30] u sustini vec pointer na prvi karakter ..
Inkrementiraj pointer kao sto ti je @Dexic rekao
Daklle ..
Code:
 
 for(i=0; i<2; i++) {
        printf("Unesite ime, prezime i godiste za studenta %d:", i+1);
        scanf("%s%s%d", p->ime, p->prezime, &p->godine);
        p++;
    }

Viva lollapalooza
 
Odgovor na temu

glorius
Damir Nikolic
C++ developer
SR

Član broj: 4366
Poruke: 428
*.dynamic.isp.telekom.rs.

ICQ: 208550327


+14 Profil

icon Re: Unos podataka u strukturu uz pomoc pointera15.06.2013. u 18:59 - pre 132 meseci
Moras i ovde da inkrementiras pointer:

Code:


for(i=0; i<2; i++)
    {
        printf("Unesite ime, prezime i godiste za studenta %d:", i+1);
        scanf("%s%s%d", &p->ime, &p->prezime, &p->godine);
        p++;
    }



Losa stvar oko ovoga je da posle izvrsavanja ovog koda p ne ukazuje vise, kao sto bi mozda ocekivao, na prvi element zp niza posto je adresa na koju pokazuje pomerena na 3. element niza.
Jedno resenje je da posle gornjeg koda opet stavis:

p = &zp;

tako da p opet ukazuje na prvi element da bi kasnije pravilno odstampao vrednosti.

Evo i drugacijeg resenja koje je cistije:

Code:


#include <stdio.h>
typedef struct student {
    char ime[30];
    char prezime[30];
    int godine;
}Student;

main() {
    Student zp[3];
    Student *p;
    int i;

    p = &zp;

    for(i=0; i<2; i++) {
        printf("Unesite ime, prezime i godiste za studenta %d:", i+1);
        scanf("%s%s%d", &p[i].ime, &p[i].prezime, &p[i].godine);
    }

    for(i=0; i<2; i++) {
        printf("Student %d: %s %s %d\n", i+1, p[i].me, p[i].prezime, p[i].godine);
        
    }
    system("PAUSE");
}



EOF
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Unos podataka u strukturu uz pomoc pointera

[ Pregleda: 2493 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.