[erledigt] über getchar() gestolpert



  • Hallo zusammen,

    Ich habe eben mit C begonnen und bin nun über getchar() gestolpert. In meinem Buch steht: "getchar reads the next input character from a text stream and returns that as its value".

    #include <stdio.h>
    int main()
    {
    	int c;
    
    	while (c = getchar() != EOF)
    	{
    		printf("%d\n", c);	
    	}
    }
    

    beim Ausführen dieses Programms, bekomme ich nun für jeden Charakter eine 1 auf den Screen. Sollte ich nicht den entsprechenden Buchstaben bekommen?

    Oder habe ich die Funktionsweise von getchar() nicht verstanden?

    Vielen Dank für Tipps!



  • du siehst das ergebnis des vergleichs 'getchar() != EOF'
    machs besser so:

    for (;;)
    {
      int c = getchar();
      if (c == EOF)
        break;
      printf("%d\n", c);
    }
    

    🙂



  • Du hast die Priorität der Operatoren nicht verstanden. != hat eine höhere Priorität als =. Siehe z.B. http://www.difranco.net/cop2220/op-prec.htm

    Was das in deinem Code bewirkt kannst du dir mal selbst überlegen.

    Ansonsten, wenn du den Code entsprechend korrigiert hast, solltest du feststellen, dass immer noch nicht der entsprechende Buchstabe angezeigt wird, sondern sein Zeichencode. Das liegt daran, dass du das %d Format bei printf() benutzt.



  • super, alles klar! VIelen Dank für die rasche Antwort!

    Kann man hier im Forum die Beiträge irgendwie als "erledigt" kennzeichnen?



  • kulturfenster schrieb:

    Kann man hier im Forum die Beiträge irgendwie als "erledigt" kennzeichnen?

    Du kannst deinen ersten Beitrag editieren und z.B. [erledigt] ins topic schreiben. Den alten topic-Namen natürlich nicht löschen 😉


Anmelden zum Antworten