Mali problem u c++

poruka: 3
|
čitano: 888
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
16 godina
neaktivan
offline
Mali problem u c++
pitanje
prihvaćeno rješenje

Kod je sljedeći:

 

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
   
    char choice[15];
    int i;
    char* Family[3];
    char* pChoice;
   
    for (i = 0 ; i < 3 ; i++)
    {
       cin>> choice;
       pChoice = choice;
       Family[i] = pChoice;    
          
    }
   
    cout<< endl;
    cout<< Family[0] ;
    cout<< Family[1] ;
    cout<< Family[2] ;
   
    char z;
    cin>> z;
    return 0;
}

 

npr. unos (input) u konzolu:

a

b

c

 

output:  c c c

 

problem: kako treba urediti kod da rezultat(output) bude ( a b c ) odnosno zašto komp vraća  c c c 

(samo  unos zadnjeg cin-choice-a)

 

HVALA

 

Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
Mali problem u c++

Nemoj se igrati s pointerima(*) ako neznas kako:

Ako samo zelis unosit znak po znak u matricu, to mozes ovako:

 

int main(int argc, char *argv[])
{

    char Family[3];
    for (int i=0; i<3; i++)
    {
       cin>>Family[i];
    }

...//Ostatak tvog koda

 
0 0 hvala 0
16 godina
neaktivan
offline
Mali problem u c++
prihvaćeno rješenje

Mogao si mu makar objasniti sto ne valja, da zna, a da zna i netko drugi tko bude citao forum.

 

Ukratko,

kopiranje pointera nije isto sto i kopiranje podataka. U array Family se sprema samo pointer na array choice, koji se efektivno prepisuje svakom iteracijom for loopa. Dakle, nakon iteracija, array family na sva tri indeksa drzi jednaku stvar (adresu prvog znaka arraya choice), a kako se array choice ne pomjera na stacku i efektivno prepisuje svaku iteraciju, tako se na kraju ispisuje tri puta jednako.

 

Jedan globalni savjet za sve 'pocetnike' ovdje:

Odjebite i pointere i char arraye i cisti C kvragu i uhvatite se STL-a. Nitko normalan ne koristi char arraye od pojave stringa, niti obicne buffere umjesto kolekcija i iteratora. Argument da M$ Windows API koristi upravo to ide meni u dzep, jer ti ljudi nisu normalni.

 

Carpe diem.

 

@nik

Dugacki odgovor ti je na PM-u kako si pitao

 

 

 
1 0 hvala 1
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice