Cześć
Piszę sobie bankomat, i prowadzącemu zamarzyło się gwiazdki zamiast hasła. No i zaimplementowałem wpisywanie, backspace (działają przyzwoicie), jednak coś delete wariuje.
#include
#include
#include"conio.h"
using namespace std;
void main()
{
int licznik=0;
char c;
string lan="";
cout<<"Podaj haslo :";
while((c=getch())!=13)
{
if((c!=8)&&(c!=-32)) //8 backspace, -37 delete
{
lan=lan+c;
cout<<"*";
}
else if(c==-32) <-
{
system("cls");
cout<<"Podaj haslo :";
lan="";
fflush(stdin);
}
else if(c==8)
{
system("cls");
cout<<"Podaj haslo :";
lan=lan.erase(lan.length()-1,1);
for (int i=0;i
cout<<"*";
}
}
system("pause");
}
Wiem że mieszam c i c++ (zwłaszcza ta conio.h - getch), a tak się robić nie powinno, jednak chyba nie ma innego sposobu na rozwiązanie tych durnych gwiazdek (samodzielna implementacja getch mi się jakoś nie uśmiecha) … Po naciśnięciu delete, wykonuje się zaznaczony strzałką blok. Problemem jest to że zaraz następuje wykonanie kolejnego kroku pętli (bez wciśnięcia żadnego klawisza), i do zmiennej lan wędruje znak"S" (wykonuje się pierwszy blok ifa). Macie jakieś pomysły z kąd się bierze to owe felerne “S” ??