Skocz do zawartości

Recommended Posts

Napisano

Mam problem. Otóż powiedzmy że napisałem:

cout<<"\n\n\t\tWRITE PASSWORD : "<<endl;
char pass[strlen(tab1)];
cin>>pass[strlen(tab1)];      
cout<<"\n\t\t\tPRESS ENTER"<<endl;
cin.get();

if(pass==tab1)
{
system("CLS");
cout<<"\n\n\t\t\ CONGRATULATIONS MASTER!!!"<<endl;
system("PAUSE");

}

i jak program zkompiluje to dziala ale nie do konca bo jak podam wartosc pass identycznom jaka jest w tab1

if(pass==tab1)

to konczy progsa jakbym podal zly wynik.
prosze o szybką pomoc :)

Napisano

W C++ napisy przechowywane są w postaci tablic char[].

Jeżeli zapisujesz:

char *str1,*str2;
if(str1==str2)

to porównujesz nie zawartość tablicy do której odwołują się wskaźniki, ale czy wskaźniki odwołują się do tego samego adresu. Powinieneś napisać:

char *str1,*str2;
if(!strcmp(str1,str2))
{
 //hasło poprawne
}
else //hasło niepoprawne

funkcja int strcmp(const char *str1,const char *str2) porównuje dwa ciągi znaków i zwraca 0 jeśli są takie same.

Napisano

Z tego co widze tab1 i pass sa to tablice zankow i do porownania stringow nie mozesz uzyc instrukcji

if( tab1 == pass )  // zle

Do porownania stringow uzywaj funkcji:

int strcmp(
const char *string1,
const char *string2
);

Jezli wartosci zwrocona bedzie 0 to dwa lancuchy znakow sa identyczne.

if( (strcmp(tab1, pass)) == 0)
{
     cout << "Haslo ok";
}

Pozdrawiam mam nadzieje ze cos pomoglo :), jakby co to pisz.

Napisano

Ja bym sie jeszcze czepil tego:

char pass[strlen(tab1)]; 
cin>>pass[strlen(tab1)];  

szczególnie to tej 2 lini.
Jak podajesz cin >> pass[sizeof(tab1)] to podajesz element pierwszy za ostatnim typu char. Podaj cin >> pass;

Troche dziwne, ze to Ci sie kompiluje bo z tego co ja wiem to rozmiar tablicy musi byc staly i znany juz w ciagu kompilacji. Chyba, ze uzywasz kompilatora ze zgodnoscią C99. Napisz jak wyglada deklaracja i inicjalizacja tab1.

pozdrawiam

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...