getch ()

Simon Štriker simon.striker at telemach.net
Wed Sep 24 21:27:34 CEST 2003


Živijo!

> Žal, še sam nisem pisal kaj takega, tako, da ti teško pomagam. vendar se
> zdi rešitev, da ne bereš gesla iz stdin pač pa tpkovnico preusmeriš v
> kak drug (svoj) stream.
>
> Prosim, sporoči, kako boš rešil.

Jaz sem se še vedno ubadal s primerno rešitvijo v Linuxu in končno mi je le
uspelo. Torej znotraj programa sem uporabil funkciji initscr( )
in noecho( ). Nato sem moral pred vsakim izpisom na zaslon (pre uporabo
cout) uporabiti še funkcijo refresh ( ). Na koncu (po vnosu gesla) pa sem
dodal funkcijo endwin ( ), ki vbistvu zapre ta "začasni" screen. Potem
program deluje normalno.

En delcek izvorne kode za lazjo predstavo:

#include <iostream>
#include <curses.h>
#include <stdlib.h>
using namespace std;

int main ()
{
     system("clear");
     initscr( );
     noecho( );

     char password[]="toJEgeslo";
     char password1[6];
     refresh( ); //Potrebujem, da mi izpiše spodnja dva "niza"
     cout << "Imenik naslovov\n";
     cout << "\nVnesi vstopno geslo: ";

     password1[5]='\0';
     for (int i=0;i<5;i++)
     {
          refresh( ); //Potrebujem, da mi izpisuje * ob vnosu gesla
          password1[i]=getch ( );
          cout << "*";
     }
     endwin( );
---------------------------------------------------------------------
Stvar mi sedaj deluje približno tako, kot sem si zamislil. Edina težava se
pojavi ob izpisu zgornjih dveh nizov: "Imenik naslovov" in pa "Vnesi vstopno
geslo: ". Problemček je v tem, da mi drugi niz med izpisovanjem na zaslon
zamakne v desno za širino prvega niza. Primer izpisa:

Imenik naslovov

                         Vnesi vstopno geslo:

Problem je verjetno v funkciji refresh( ). Vendar sem to težavo začasno
rešil z for zanko, v kateri sem izpisal znak \b, ki mi drugi niz premakne za
dolžino prvega v levo. - rešitev je začasna, dokler ne ugotovim, v čem je
težava.

Lep pozdrav, Simon

Simon Štriker
Rusjanov trg 2
1000 Ljubljana   041/473-856





More information about the lugos-prog mailing list