C und getchar()



  • Hallo zusammen,

    ich hätte eine Frage zur Funktionsweise von getchar() Funktion. Ich habe nach einer Lösung schon gegoogelt und bin aus den Diskussionen nicht schlau geworden.

    Ich bin ein Anfänger und lerne aus dem Kernighan/Ritchie Buch.

    Die Frage ist zu folgendem Beispiel aus dem Buch:

    #include <stdio.h>
    /* copy input to output; 2nd version */
    main()
    {
    	int c;
    	while ((c = getchar()) != EOF)
    		putchar(c);
    }
    

    wenn ich nun beim ausführen z.B. "hallo" und taste "Enter" drücke erhalte ich "hallo". Wenn ich danach Ctrl+D (also EOF beim Mac) eingebe endet das Programm.

    Wenn ich nun "hallo" und Ctrl+D eingebe, erhalte ich "hallo" und das Programm endet nicht. Warum reagiert denn das Programm auf EOF nach dem Drücken der "Enter"-Taste anders als ohne?

    Danke im Voraus für Eure Antworten!
    Grüße
    Alex



  • Ctrl+D ist nicht EOF.

    Wenn du in einer ansonsten leeren Zeile Ctrl+D drückst, signalisiert dein Betriebssystem deinem Programm ein EOF.



  • Ahso, ok danke.

    Kann ich denn meinem Programm irgendwie anders EOF signalisieren, ohne davor auf Enter zu drücken?

    Grüße



  • Versuch mal zweimal Ctrl+D.



  • Das hat funktioniert. Danke!


Anmelden zum Antworten