tablica ASCII
Ostatnio zmodyfikowano 2017-05-23 14:50
adrian.paz Temat założony przez niniejszego użytkownika |
tablica ASCII » 2017-05-22 13:31:28 Witam! mam pytanie dotyczące sprawdzania mojego hasła. Wszystko działa dobrze, chciałbym tylko, żeby klawisz BACKSPACE spełniał swoją pierwotną funkcję i nie był traktowany jako znak. Wszystko inne wiem, że będzie, chciałbym jednak aby ten jeden klawisz był wyodrębniony :) pomoże ktoś? :D zmiana( 10 ); char login[ 10 ]; login[ 0 ] = 'a'; login[ 1 ] = 'd'; login[ 2 ] = 'r'; login[ 3 ] = 'i'; login[ 4 ] = 'a'; login[ 5 ] = 'n'; login[ 6 ] = '.'; login[ 7 ] = 'p'; login[ 8 ] = 'a'; login[ 9 ] = 'z'; char haslo[ 4 ]; haslo[ 0 ] = '1'; haslo[ 1 ] = '7'; haslo[ 2 ] = '2'; haslo[ 3 ] = '8'; cout.width( 80 ); cout << right << "WITAJ W PROGRAMIE AUTORSTWA ADRIANA PAZ! " << endl << endl << endl; Sleep( 1000 ); cout << "Podaj login i haslo, zebym wiedzial kim jestes :)" << endl << endl; cout << "Login: "; zmiana( 14 ); for( int i = 0; i < 10; i++ ) { login[ i ] = getch(); cout << "*"; } zmiana( 10 ); cout << "\n" << "Haslo: "; zmiana( 14 ); for( int i = 0; i < 4; i++ ) { haslo[ i ] = getch(); cout << "*"; } zmiana( 10 );
if( login[ 0 ] == 'a' ) if( login[ 1 ] == 'd' ) if( login[ 2 ] == 'r' ) if( login[ 3 ] == 'i' ) if( login[ 4 ] == 'a' ) if( login[ 5 ] == 'n' ) if( login[ 6 ] == '.' ) if( login[ 7 ] == 'p' ) if( login[ 8 ] == 'a' ) if( login[ 9 ] == 'z' )
if( haslo[ 0 ] == '1' ) if( haslo[ 1 ] == '7' ) if( haslo[ 2 ] == '2' ) if( haslo[ 3 ] == '8j' ) { system( "cls" ); zmiana( 9 ); cout.width( 84 ); cout << endl << endl; cout << right << "<<<<<Tozsamosc potwierdzona! Witaj Adrian!>>>>>" << endl << endl << endl; |
|
Rashmistrz |
» 2017-05-22 16:17:43 http://www.cplusplus.com/doc/ascii/Tam gdzie masz getch() sprawdzaj czy otrzymałeś kod backspace i rób co trzeba. Jak zaimplementowałeś funkcję zmiana()? Zmienia ona kolor wypisywania czy całą konsolę? |
|
latajacaryba |
» 2017-05-22 16:58:30 To ja tylko dodam, że char login[ 10 ]; login[ 0 ] = 'a'; login[ 1 ] = 'd'; login[ 2 ] = 'r'; login[ 3 ] = 'i'; login[ 4 ] = 'a'; login[ 5 ] = 'n'; login[ 6 ] = '.'; login[ 7 ] = 'p'; login[ 8 ] = 'a'; login[ 9 ] = 'z';
równa się char login[ 11 ] = "adrian.paz"; char login[ 10 ] { 'a', 'd', 'r', '...' };
Poza tym... po co używasz tablic char zamiast stringów? |
|
adrian.paz Temat założony przez niniejszego użytkownika |
tablica ASCII » 2017-05-22 22:26:04 Dziękuje wszystkim za odpowiedzi :) Dlaczego używam tablic char? Ponieważ chce zamiast litery/cyfry wyświetlać gwiazdkę. Dzisiaj wpadłem na ten pomysł bo już spać przez to nie mogłem jak to zrobić :D Jak używam cin>> to pokazuje mi wpisywany tekst, a funkcja getch() tylko pobiera. Nie wiem jak inaczej zrobić żeby wyświetlało gwiazdkę. Funkcji zmiana() używam do zmiany koloru wypisywanego tekstu.
Do latajacaryba>>Zapomnialem, że wogóle tak można :D |
|
Rashmistrz |
» 2017-05-22 22:45:56 Funkcji zmiana() używam do zmiany koloru wypisywanego tekstu. |
Wiem, że jest do tego, ale chcę wiedzieć co jest w środku funkcji tak przy okazji. |
|
adrian.paz Temat założony przez niniejszego użytkownika |
tablica ASCII » 2017-05-22 23:01:39 void zmiana( int nr ) { HANDLE chwytak; chwytak = GetStdHandle( STD_OUTPUT_HANDLE ); SetConsoleTextAttribute( chwytak, nr ); } a pokazałbyś jak użyć tego backspace? mi się nie udaje nie wiem jak to zrobić :( próbuje coś z cout<<"\b" ale nie działa.. |
|
Rashmistrz |
» 2017-05-23 14:50:36 '\p' to backspace używając znaku ucieczki(backslash). Oryginalny liczbowy kod znaku to 8.
Jak wydrukujesz to to Ci zje ostatni znak na ekranie,
bodajże włącznie ze znakiem nowej linii.
(W niektórych implementacjach tylko cofnie kursor i będziesz musiał nadpisać znak.)
(Gdy jest na początku linii to brak efektu.)
EDIT(09:00): Mam ten sam problem, że mi ten znak specjalny nie działa. |
|
« 1 » |