Strona 1 z 1

Wskaźniki C++

: 4 cze 2009, o 13:42
autor: Lokaty Lokacz

Kod: Zaznacz cały

void tworzListe(void)
{struct osoba *nowy,*pocz,*biez;
 char *i,*p,znak;
 if(begin==NULL)
 nowy=pocz=biez=NULL;
 cout<<"Znak '0' oznacza zakończenie wprowadzania danych."<<endl;
 if (pocz==NULL) cout<<"\nPodaj pierwszy elementu: ";
 do {
     nowy = (struct osoba *)malloc(sizeof(struct osoba));
     i=(char *)malloc(512*sizeof(char));
     if (pocz!=NULL) cout<<"Podaj nastepny element: ";
     cin>>i;
     nowy->imie = (char *)malloc((strlen(i)+1)*sizeof(char));
     strcpy(nowy->imie, i);
          if (pocz==NULL) {
                      begin=nowy;
                      pocz=nowy;
                      biez=nowy;
                      biez->nast = NULL;
                      biez->i=1;
                     }
        else {biez->nast = nowy;
              nowy->i=biez->i+1;
              biez=nowy;
              nowy->nast = NULL;
             }
    }    
while( !='0'); 

}
Witam chodzi mi tylko o warunek zakończenia działania tej funkcji. Chce żeby ona się kończyła gdy wprowadze element 0... i niby prosta sprawa ale nie wiem jak to zrobić... Bardzo prosze o pomoc

Wskaźniki C++

: 4 cze 2009, o 15:29
autor: spajder

Kod: Zaznacz cały

while( !='0'); 
????
Nie mieszaj tak C i C++ (np. przed deklaracją nie potrzeba struct, stosuj new i delete itp.)

Co do problemu:
[/code]
if(strcpy(i, "0"))
return; // konczy funkcje

if((strcpy(i, "0"))
break; // wychodzi tylko z pętli. Tego powinieneś użyć, bo trzeba jeszcze zwolnić przydzieloną pamięć
[/code]