Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem ze stringiem, i szukaniem frazy.

Ostatnio zmodyfikowano 2013-01-10 18:23
Autor Wiadomość
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:
C/C++
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.
P-73434
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? :)
P-73437
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:
C/C++
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.
P-73447
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...
P-73448
DejaVu
» 2013-01-09 15:44:31
@up: można strzelać, że 'plik' jest zmienną std::string :)
P-73451
kiraler
Temat założony przez niniejszego użytkownika
» 2013-01-09 21:10:26
Oto cały kod:
C/C++
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
P-73499
xevuel
» 2013-01-09 21:13:37
users.read( plik.c_str(), bufor );
To nie będzie działać.
P-73501
kiraler
Temat założony przez niniejszego użytkownika
» 2013-01-09 21:16:46
Dlaczego nie będzie działać ?
P-73502
« 1 » 2
  Strona 1 z 2 Następna strona