[C] Auf Benutzer warten (Pause-Funktion implementieren)

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
TRex
Moderator
Beiträge: 8346
Registriert: 23.11.2006 12:23:54
Wohnort: KA

[C] Auf Benutzer warten (Pause-Funktion implementieren)

Beitrag von TRex » 20.12.2006 14:59:41

Hi,

dachte schon, dass ich nicht lange suchen muss, als ich die pause() Funktion in den man-pages gefunden habe, aber das Teil ist für den Zweck doch anscheinend überdimensioniert.

Ich möchte einfach nur auf eine Benutzereingabe warten, also sowas wie PAUSE(.exe) im alten DOS.

Ein anderes Forum schlug mir getch() bzw. eine Implementierung dafür vor...gibts nicht was einfacheres? scanf() finde ich zu gefährlich..wer weiß, wo die Daten hinlaufen würden bei böswilliger Eingabe.

help any?

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 20.12.2006 15:04:22

warum nicht getchar() ?

Code: Alles auswählen

gms@gms1:~$ cat x.c
#include <stdio.h>

int main() {
  printf("press enter to continue\n");
  getchar();
  printf("finished\n");
}
gms@gms1:~$ gcc -o x x.c
gms@gms1:~$ ./x
press enter to continue

finished

Benutzeravatar
TRex
Moderator
Beiträge: 8346
Registriert: 23.11.2006 12:23:54
Wohnort: KA

Beitrag von TRex » 20.12.2006 18:40:03

hatte nicht funktioniert, weil ich nicht an den Tastaturpuffer dachte.

Die Funktion zum Entleeren vom Puffer hatte ich zwar schon, aber ich dachte nicht daran, sie auch einzubauen an dieser Stelle.

Code: Alles auswählen

void clear_stdin() {
char tmp;
if ((tmp = getchar()) != '\n')
ungetc(tmp,stdin);
}
Das brauch ich bei mir, weil ich bei der Menüführung Zahlen mit fgetc einlese und den Zeilenumbruch rauswürgen musste (der dann im Puffer verbleibt).

Antworten