Hallo,
ich habe ein Problem mit einem Beispielcode, den ich nicht verstehe. Er ist aber schön kurz:
Code:
#include <stdio.h>
int main(void)
{
int c;
int anzahl = 0;
c = getchar();
if (c != EOF)
while (c != EOF)
{
c = getchar();
if (c != EOF) anzahl = anzahl + 1;
}
printf ("%3d", anzahl);
return 0;
}
Die Aufgabe lautete: Schreiben Sie unter Verwendung von getchar() ein
Programm in C, dass zählt wie viele Zeichen vom Terminal eingelesen wurden.
Das Programm funktioniert. EOF erzeugt man unter Windows mit "STRG+z", unter
Linux mit "STRG+d". Nun zur Frage. In meinem Buch (C als erste Programmiersprache)
steht folgendes:
Aufgabe 3.5: Einlesen von Zeichen mit
getchar()
Der einfachste Eingabemechanismus besteht darin, ein einzelnes Zeichen von der
Standard-Eingabe – normalerweise von der Tastatur – mit Hilfe von
getchar() zu
lesen. Die Syntax von
getchar() ist:
int getchar (void)
Die Standardeingabe ist zeilengepuffert, das heißt,
getchar() wartet, bis eine Zeile
mit der Return-Taste abgeschlossen wird. Der Rückgabewert ist nicht vom Typ
char, sondern vom Typ
int.
Warum kann diese Programm Zeichen zählen? Ich erwartete, dass es nur Zeilen
zählt, was auch die zweite Teilaufgabe ist. Außerdem frage ich mich, warum der
Code "so viele" (zwei if und eine while) Schleifen hat.
An diesem Beispiel hänge ich schon länger und versuche mit ein Flussdiagramm zu
denken, was mit aber nicht gelingt um den Ablauf nachvollziehen zu können.
Viellicht ist jemand so gnädig .
Grüße
Tim
Lesezeichen