Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : curses.h Eingabe!



locai
07-09-2003, 09:34
Hallo erstmal,
Ich hab mich grad mal mit der curses.h beschäftigt komm aber nicht weiter weil ich nicht weis wie man darbei eine zahl in einer Variable speichert.
Also wie:
cin >> Variable;

Also wenn jemand weis wie das geht oder nen tutorials zur curses.h hatt meldet euch.

MFG

Locai:cool:

ContainerDriver
08-09-2003, 13:40
Such mal auf deinem System nach einem Verzeichnis howto, da sollte ein ncurses-Tutorial zu finden sein (in englisch).

MfG

DanDanger
09-09-2003, 16:14
Hallo,

da gibt es Mehrere Möglichkeiten.

1. Du benutzt getchar (das funzt auch unter Curses)


char c ;
c = getch() ;


Das ist z.B nützlich, Wenn Du auf einzelne Tastendrücke (z.B die ESC-Taste, die Pfeil-Tasten, etc.) reagieren möchtest. Sehr nützlich für Menüs, etc.

Wenn du ganze Strings (oder Zahlen) einlesen möchtest, nimmst du am
besten eine Eingabemaske :


#include <curses.h>

struct titel
{
int x, y ;

char *ttext ;
} tzeile = {1, 3, " Geben Sie BitteIhren Vor-und Nachnamen ein.
ESC = Ende, RETURN = Neue Eingabe. "} ;

stuct maske
{
int x1, y1 ;

char * strl ;

int xe, ye, maxe, cnte ;
char stre[41] ;
}

masklist[]=
{
{3, 5, "Vorname:" , 3, 16, 15, 0, ""},
{5, 5, "Nachname:", 5, 13, 15, 0, ""} ;
} ;

/* So, das war's. Nun kannst du mit den Masken ein wenig herumspielen */
/* z.B. Namen ein - und Ausgeben */

int main(int argc, char *argv[])
{
/* Cursor auf Eingabebereich Setzen */
int i = 0 ;

char c ;

/* Curses Initialisieren */
initscr() ;

move(masklist[i].ye, masklist[i].xe) ;
refresh() ;

/* Zeichen einlesen : getch() */
c = getch() ;

if(masklist[i].cnte < masklist[i].maxe && c >= 32)
{
(masklist[i].stre)[masklist[i].cnte] = c ;
masklist[i].cnte++ ;
}

/* Hier : Zeichen Ausgeben, ueber Addstr-Funktion */
clear() ;
mvaddstr(tzeile.y, tzeile.x, tzeile.ttext) ;

for (i=0; i<2; i++)
{
mvaddstr(masklist[i].y1, masklist[i].x1, masklist[i].stre) ;
refresh() ;
}

/* ...... */
/* Curses De-Initialisieren */
endwin() ;

return 0 ;
}



Kompilieren lässt sich das ganze mit : "gcc -o datei.o datei.c -lncurses"

Zum Einlesen gibt es Ausserdem noch folgende Funktionen (einfach mal die Man-Pages Wälzen) :
inch() : Zeichen an Cursor-Position Lesen ;
getstr(Zeichenkette) : Zeichenkette aus dem Tastaturpuffer Lesen ;
scanw() : Im Prinzip wie scanf() ;

Zum Schreiben (Ausgabe) gibts z.B. folgende Funktionen) :
addstr(Zeichenkette) : Zeichenkette schreiben ;
addch(Zeichen) : Zeichen Schreiben ;
mvaddstr(x, y, Zeichenkette) : Zeichenkette an der Position x, y Schreiben ;

Nicht Vergessen, nach jeder Schreiboperation die änderung mit refresh() sichtbar zu machen.

Ich hoffe, das konnte ein wenig Helfen.......

Gruss
DanDanger