Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
direkte Eingaben von der Tastatur in C

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - C
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
andy



Anmeldungsdatum: 07.11.1999
Beiträge: 150
Wohnort: Kiel

BeitragVerfasst am: 29. Feb 2000 19:07   Titel: direkte Eingaben von der Tastatur in C

Moin,

wie kann man in C direkte Eingaben von der Tastatur einlesen ohne
auf die Eingabe der return-Taste zu warten ?

Ciao, Andy
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen

psychozapp



Anmeldungsdatum: 24.01.2000
Beiträge: 85
Wohnort: Nürnberg

BeitragVerfasst am: 29. Feb 2000 19:39   Titel: Re: direkte Eingaben von der Tastatur in C

Hallo,
versuch's doch mal mit den ncurses.
man curses
Damit kann man noch viel mehr so zeug machen.
Ciao, PsychoZapp (sprich seitcho sepp)


Grad fällt's mir noch ein:
Es gibt auch Slang, aber davon hab ich kaum
Ahnung. Ich weiß nur das es das Interface für
DOS und Linux gibt. Aber ich denke mit den
Curses bist du gut beraten.


Zuletzt bearbeitet von psychozapp am 29. Feb 2000 19:39, insgesamt 2-mal bearbeitet
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden

TuX
Gast





BeitragVerfasst am: 29. Feb 2000 20:19   Titel: Re: direkte Eingaben von der Tastatur in C

Diese Frage hat hier Phil am 02-Sep-1999 18:27:11 unter dem Titel "Anfängerfrage" schon einmal gestellt.
Hier ist ein Link auf diesen UltraBoard-Thread: Artikel Nr. 11

Folgend ein Auszug aus der Pro-Linux C/C++ HOWTO:

code:

4.4. Eine Return-lose Eingabe realisieren ?

Q: Wie kann man mit C/C++ ein Eingabefeld realisieren, mit dem ohne
Bestaetigung mit Return ein Zeichen aufgenommen wird ?
Beispiel:

#include <iostream> // cout, cin

using namespace std;

//-----------------------------
int main(int argc, char** argv)
//-----------------------------
{
char EinZeichen;
cout << "Zeichen eingeben: " << endl;
cin >> EinZeichen; // Das hier nur eben OHNE RETURN
// wenn es geht
cout << "Zeichen war " << EinZeichen << endl;
return (0);
}

A: Die Standardbibliotheken sowohl von C als auch C++ arbeiten auf
Eingabe- und Ausgabe-Streams. Sonst gibt es nichts. Und das Terminal
ist dafuer zustaendig, beispielsweise eben den stdin-stream mit den
Tastatureingaben zu fuellen. Soweit bestens. Aber das tut so ein
Terminal nur zeilenweise nach bestaetigen mit Return. Demnach kann
man mit den stream-Geschichten nun mal beim besten Willen keine
solche return-lose Eingabe realisieren.
Statt dessen kann man aber was programmieren, was nicht ueber die
streams geht. Also direkt mit dem Terminal arbeitet.
Beispielsweise ncurses... kann da aber nicht aus eigener Erfahrung
reden, weil ich das noch nie selbst gemacht hab.
Aber mit sowas geht das zu machen.

 

andy



Anmeldungsdatum: 07.11.1999
Beiträge: 150
Wohnort: Kiel

BeitragVerfasst am: 01. März 2000 17:52   Titel: Re: direkte Eingaben von der Tastatur in C

Mein Compiler kennt die Funktion getch() nicht. Wie kann ich in C (nicht C++) ungepuffert ein Zeichen einlesen ?
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen

psychozapp



Anmeldungsdatum: 24.01.2000
Beiträge: 85
Wohnort: Nürnberg

BeitragVerfasst am: 01. März 2000 19:18   Titel: Re: direkte Eingaben von der Tastatur in C

Wie schon gesagt: NCURSES!

Das getch, das du meinst,ist in der conio.h definiert, die es nur unter DOS gibt.
In den NCURSES gibt es auch ein getch(), das du benutzen mußt.
(Oder du freundest dich mit Slang an.)

gz. PsychoZapp
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden

andy



Anmeldungsdatum: 07.11.1999
Beiträge: 150
Wohnort: Kiel

BeitragVerfasst am: 02. März 2000 20:23   Titel: Re: direkte Eingaben von der Tastatur in C

int getkey(void)
{
int taste;
taste=getch();
if (taste == 0 || taste == 224)
{
taste=getch()+255;
}
return taste;
}

das ist jetzt nur das Unterprogramm, aber wenn ich das Programm compiliere,
bekomme ich die folgenden Meldungen. Die curses.h habe ich aber angegeben.
Warum klappt das nicht ?


in function 'getkey':
undefined reference to 'stdscr'
undefined reference to 'wgetch'
undefined reference to 'stdscr'
undefined reference to 'wgetch'
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen

psychozapp



Anmeldungsdatum: 24.01.2000
Beiträge: 85
Wohnort: Nürnberg

BeitragVerfasst am: 02. März 2000 22:41   Titel: Re: direkte Eingaben von der Tastatur in C

Hi,

schein ein Linker Error zu sein.
(#include<?> vergessen bringt Compiler Errors)
Versuchs's mal mit -lncurses oder -lcurses.

Vielleicht geht's ja dann.

Was willst du überhaupt für eine Prog schreiben?

ciao PZ
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden

andy



Anmeldungsdatum: 07.11.1999
Beiträge: 150
Wohnort: Kiel

BeitragVerfasst am: 08. März 2000 19:26   Titel: Re: direkte Eingaben von der Tastatur in C

Moin,

das mit -lcurses hat geklappt...nur wartet das Programm nicht auf einen Tastendruck, sondern gibt stumpf ein Zeichen aus. Ich hab' mal was mit drangehängt. Soll eigentlich nur ein stinknormaler Hexeditor werden...

/* gcc taste.c -otaste -lcurses */
#include <stdio.h>
#include <curses.h>
#include <ctype.h>

int getkey(void);
int main (void)

{
unsigned int taste=0;

while (taste!=27)
{
taste=getch();
printf("%c
",taste);
}
return 0;
}
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen

psychozapp



Anmeldungsdatum: 24.01.2000
Beiträge: 85
Wohnort: Nürnberg

BeitragVerfasst am: 08. März 2000 20:04   Titel: Re: direkte Eingaben von der Tastatur in C

Ein Segfault wäre ebenso wahrscheinlich gewesen.

Schreib' mal bevor du getch() usw. benutzt in den Code:

initscr();
cbreak();
noecho();
nonl();
keypad(stdscr,TRUE);

Und zum Schluß:

endwin();

Ohne Initialisierung ist es klar, das nix geht.

ciao und les' dir in Zukunft mal genauer durch was unter man curses kommt.
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden

psychozapp



Anmeldungsdatum: 24.01.2000
Beiträge: 85
Wohnort: Nürnberg

BeitragVerfasst am: 08. März 2000 20:11   Titel: Re: direkte Eingaben von der Tastatur in C

Ich hab grad meine "Verbesserungen" ausprobiert.

Du solltest nicht printf verwenden, wenn du mit den curses arbeitest. addch() echochar() und refresh() sind dafür besser geeignet, sonst kriegst du den Bildschirmoutput ein bischen zu spät.

Hier ein Prog von mir:
code:

#include<curses.h>

/* INIT PROCEDURE */
void initscreen(void)
{
initscr();
cbreak();
noecho();
nonl();
keypad(stdscr,TRUE);
}

/*-----------------------MAIN PROGRAM-------------------------*/
int main(void)
{
/* VARIABLES */
int ch;
char rch;
/* INITIAL */

initscreen();
/*-------------------------MAIN LOOP--------------------------*/
do {
ch=getch();
rch=ch;
printw("Sequence: %c Integer value: %i Char value: %i
",ch,ch,rch);
}
while (ch!='x');
/*-------------------------END OF PROG------------------------*/
endwin();
return 0;
}

 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - C Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy