Trust Napisano Styczeń 7, 2019 Autor Zgłoś Udostępnij Napisano Styczeń 7, 2019 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 :) Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Aberration Napisano Styczeń 7, 2019 Zgłoś Udostępnij Napisano Styczeń 7, 2019 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. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Phoenix Napisano Styczeń 7, 2019 Zgłoś Udostępnij Napisano Styczeń 7, 2019 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. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Trust Napisano Styczeń 7, 2019 Autor Zgłoś Udostępnij Napisano Styczeń 7, 2019 bardzo dzieki za odpowiedz ale i tak jak wpisze poprawne haslo to wyskakuje jakby strcmp(pass, tab1) rownalo sie 1 czyli false i nic! Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Complex Napisano Styczeń 8, 2019 Zgłoś Udostępnij Napisano Styczeń 8, 2019 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 Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Trust Napisano Styczeń 8, 2019 Autor Zgłoś Udostępnij Napisano Styczeń 8, 2019 pinolec nie wiem jak ci podziękowac !! działa! oczywiscie xantosowi tesz dzienkuje bo podal mi pol rowionzania a pinolec drugie pol! Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.