kiraler Temat założony przez niniejszego użytkownika |
Problem ze stringiem, i szukaniem frazy. » 2013-01-09 00:55:22 Witam, mam taki kodzik: cout << "Podaj login" << endl; cin >> loginPODANYprzezUSERA;
system( "cls" ); cout << "Podaj hasło" << endl; cin >> hasloPODANEprzezUSERA;
hashLOGINUpodanegoPRZEZusera = md5( loginPODANYprzezUSERA ); hashHASLApodanegoPRZEZusera = md5( hasloPODANEprzezUSERA ); cout << "podany login: " << hashLOGINUpodanegoPRZEZusera << endl;
I gdy odpalam program przez debugger to, program działa, ale jak odpalam normalnie to dostaje app crash. Dodatkowo, w debugu w linijce hashLOGINU... = md5(loginPODANY...) wyskakuje takie coś: In std::string::operator=(std::string const&) () () #3 0x0040146f in menu (baza=..., users=..., znak=..., znak02=..., znak03=..., zadanie=..., id=..., czyWYP=false) at C:\Documents and Settings\Kuba\Pulpit\Projekty C++\DB Biblioteka\main.cpp:29 C:\Documents and Settings\Kuba\Pulpit\Projekty C++\DB Biblioteka\main.cpp:29:1242:beg:0x40146f At C:\Documents and Settings\Kuba\Pulpit\Projekty C++\DB Biblioteka\main.cpp:29
mimo że program działa dalej. Korzystam z Code::Blocks. Czego to może być wina ? HashLOGINUpodanegoPRZEZusera, loginPODANYprzezUSERA, hashHASLApodanegoPRZEZusera, hasloPODANEprzezUSERA to stringi. Pozdrawiam. |
|
xevuel |
» 2013-01-09 06:51:28 Stwórz najprostszy przykład, który po skompilowaniu będzie działał tak jak to opisujesz, żebyśmy mogli przeanalizować jego działanie. W tej chwili nie wiemy nawet po której linijce aplikacja się wywala bez debuggera. md5() to Twoja funkcja, czy wzięta z jakiejś biblioteki?
Btw, zdajesz sobie sprawę, że hashowanie bez soli nie ma dużego sensu? :) |
|
kiraler Temat założony przez niniejszego użytkownika |
» 2013-01-09 13:19:54 Przemyślałem to, i zdecydowałem narazie nie używać żadnego hashu. Mam jeszcze problem, otóż dlaczego jak wyszukuję pozycję frazy to zawsze dostaje wynik "-1", mimo że w "plik" jest ten login i hasło wpisywane przez użytkownika ? Kod jest taki: cout << "Podaj login" << endl; cin >> loginPODANYprzezUSERA;
system( "cls" ); cout << "Podaj hasło" << endl; cin >> hasloPODANEprzezUSERA;
pozLoginu = plik.find( loginPODANYprzezUSERA ); pozHasla = plik.find( loginPODANYprzezUSERA );
Jeszcze jedno pytanie: czy da się odczytać/zapisać dane z/do pliku binarnego poprzez std::string ? Nie chodzi mi o coś w stylu tego: users.read( jakisString.c_str(), bufor ); tylko np: users.read( jakisString, bufor ); PS. Nie brałem soli, ponieważ to jest aplikacja dla poćwiczenia. |
|
xevuel |
» 2013-01-09 15:23:58 Powtórzę jeszcze raz: stwórz w pełni kompilowalny kod. Z tego, który podajesz nie da się nic wywnioskować, chociażby dlatego, że nie wiemy ani jakiego typu jest plik, ani co on zawiera... |
|
DejaVu |
» 2013-01-09 15:44:31 @up: można strzelać, że 'plik' jest zmienną std::string :) |
|
kiraler Temat założony przez niniejszego użytkownika |
» 2013-01-09 21:10:26 Oto cały kod: int pozZNAKlog, pozZNAKpass, bufor; string plik, loginPODANYprzezUSERA, hasloPODANEprzezUSERA,
users.open( "users.dat", ios::in | ios::out | ios::binary ); users.seekg( 0, ios::end ); bufor = users.tellg(); users.seekg( 0, ios::beg ); users.read( plik.c_str(), bufor );
system( "cls" ); cout << "Podaj login" << endl; cin >> loginPODANYprzezUSERA;
system( "cls" ); cout << "Podaj hasło" << endl; cin >> hasloPODANEprzezUSERA;
pozZNAKlog = plik.find( loginPODANYprzezUSERA ); pozZNAKpass = plik.find( hasloPODANEprzezUSERA );
w plik.find(login...) i (haslo...) zawsze zwraca wartość "-1", mimo że login i hasło znajduje się w pliku. users.dat: usr; 0log: 6893a41acc29bc0cbca85f71c0f6640bpss: 8b8a91f14e8a274d597378f5037130e8
|
|
xevuel |
» 2013-01-09 21:13:37 users.read( plik.c_str(), bufor ); To nie będzie działać. |
|
kiraler Temat założony przez niniejszego użytkownika |
» 2013-01-09 21:16:46 Dlaczego nie będzie działać ? |
|
« 1 » 2 |