Weiter mit beliebiger taste...



  • @PAD: Und was tun wenn im Buffer schon ein Zeichen ist? Dann wird das ausgelesen und der User kommt erst wieder nicht zur Eingabe eines beliebigen Zeichens. Vorher Puffer löschen oder das wird nichts!

    BTW: Ich glaube wenn kein Zeichen im Puffer ist kann man bei getchar() trotzdem soviele Zeichen eingeben wie man will bloß wird nur eins zurückgegeben?!

    MfG SideWinder



  • @SideWinder

    happyaura hatte behauptet sein getchar würde nur auf "Enter" reagieren, deswegen die manpage. Das man den stdin Buffer vorher leermachen sollte ist wohl selbstverständlich.

    BTW sometimes i think something is trolling around



  • @Pad

    Das Problem mitgetchar ist bei mir, dass ich mehrere Zeichen einlesen kann, die dann gepuffert werden. Das Einlesen wird aber leider nur mit Enter beendet.

    Ich bin auf der Suche nach einer Möglichkeit, zwischen 2 Textausgaben eine Pause zu machen, die mit beliebiger Taste beendet werden kann.

    Kleines Primitives BSP:

    char c,d,e;
    
    c=getchar();
    printf("pause");
    d=getchar();
    e=getchar();
    

    Im o.g. BSP. könnte ich "abc ENTER" eingeben, dann würde erst c den Wert 'a' bekommen, "bc Enter" würden gepuffert werden. Dann "pause" ausgegeben werden, dann d den Wert 'b' bekommen und zum Schluß e den Wert 'c'.
    Es sollte aber in der gesuchten Funktion, die hier das getchar ersetzen soll, bereits nach der Eingabe von a "pause" ausgegeben werden. Ausserdem sollte sie Ansikonform sein. Ein Einlesen eines Zeichens muß nicht unbedingt stattfinden, wobei ich dafür an anderer Stelle noch Verwendung hätte.

    MfG Martin



  • Das geht mit Standard-ANSI-C nicht und mit Standard-ISO-C++ auch nicht. Entweder Plattformabhängig oder nicht :).

    MfG SideWinder



  • Nachdem deine Platform an der Stelle probleme macht, können wir vielleicht
    weiterhelfen, wenn du uns sagst mit was für einem System du arbeitest.
    Vielleicht kann man ja im OS das handling von buffered of not buffered setzen.

    Dazu müssen wir aber das System kennen.



  • Es sollte auch unter Linux kompilierbar sein.

    Bedeutet vorerst: Win+Linux.

    Was willst du damit nun anfangen?

    MfG SideWinder



  • Ich weiß ja nicht wie das in ANSI-C aussieht, aber kann man hier nicht irgendwie abfragen ob eine taste gedrückt wurde (das kann sogar TP)? Dann könnte man eine Endlosschleife laufen lassen und diese dann abbrechen durch einen tastendruck, wodurch das Programm beendet wäre...kp.

    Code-Hacker



  • Code-Hacker schrieb:

    Ich weiß ja nicht wie das in ANSI-C aussieht, aber kann man hier nicht irgendwie abfragen ob eine taste gedrückt wurde (das kann sogar TP)? Dann könnte man eine Endlosschleife laufen lassen und diese dann abbrechen durch einen tastendruck, wodurch das Programm beendet wäre...kp.

    Code-Hacker

    Nein kbhit() ist ebenfalls kein Standard.

    MfG SideWinder



  • Ich denke, ich werd es dann wohl bei der aktuellen Fassung belassen, um es sowohl offen für Win und Linux und sämmtliche Compiler zu lassen. Gab zwar in der Richtung keinerlei Einschränkungen, aber ist mir doch lieber so.
    Ich bin ja beruhigt, dass es nicht an meinen Kenntnissen lag, sondern auf die Art und Weise, wie ich es mir vorgestellt habe wirklich nicht möglich ist.

    Wünsch allerseits noch einen schönen Tag und Dank noch mal für Eure Ideen.

    Martin



  • @SideWinder
    Ich werde bei unseren Linux Spezialisten mal nachfragen ob man durch eine Systemeinstellung auch unter Linux einen unbufferd IO bekommen kann
    so daß getchar funktioniert wie in der man page beschrieben


Anmelden zum Antworten