Witam.
Od paru dni męczę się z problemem zrobienia prostego "a la" klienta logowania do systemu.(Chodzi o prosty program z curses.h tworzący pod okno konsoli, do którego trzeba wprowadzić nick oraz hasło, które będzie automatycznie zastępowane gwiazdkami).
Niestety, mój problem zaczyna się już przy wprowadzaniu nick'u. Pierwsza litera idzie dobrze, w miejscu, w którym ma być(w tym pod oknie, zaraz po Login: ) niestety, druga już ucieka z pod okna i leci normalnie w konsoli, trzecia w pod oknie a czwarta poza itd.(zresztą, teraz latają jak chcą po tej konsoli)
Kod:
mvwaddstr(win1, 1, 12, "PANEL LOGOWANIA DO SYSTEMU");
mvwaddstr(win1, 4, 1, "Login: ");
mvwaddstr(win1, 6, 1, "Haslo: ");
wmove(win1, 4,8);// ustawiamy kursor do wpisywania po Login:
do
{ // !działa! znaczy, [cenzura ;) ] połowę napisu, ale ok..
login[i]=getch(); // .. co ciekawe, nadal wczytuje login, dopóki w nowym oknie(czyt. niebieskie pole)
i++; // nie będzie 15 znaków.. czyli de facto wprowadzam ich bagatela.. 28?! o_o'
wrefresh(win1); //
wgetch(win1);
}while(login[i]==KEY_ENTER||i==15);
wrefresh(win1);
wgetch(win1);
key=getch();
getch();
endwin();
break;
}
wyskakuje mi warning:
D:\Dev-Cpp\curses.h\Klient Logowania.cpp In function `int main()':
53 D:\Dev-Cpp\curses.h\Klient Logowania.cpp [Warning] comparison is always false due to limited range of data type
czyli przy while'u, tam gdzie jest warunek. Czemu jest zawsze false?
Mam nadzieję, na w miarę jawne przedstawienie problemu.
Kod źródłowy cały znajduje się tutaj -> http://www.speedyshare.com/files/22673302/Klient_Logowania.cpp
Dziękuję i pozdrawiam!
//edit
próbowałem sztuczek z ponownym przeniesieniem kursora we właściwe miejsce, ale nie działa.
char login[15];