C Könnt ihr mir dieses Beispiel erklären?

Micheal

Ensign
Registriert
Sep. 2009
Beiträge
149
Hallo,

Ich habe eine kurze Frage. Ich habe ein Buch über die Programmiersprache C und ich versuche gerade folgendes Beispiel auszuführen.

Das Programm soll mir die Anzahl der Charaktere vom Input aufzählen.

Code:
#include <stdio.h>

main()
{

long nc;
nc = 0;

while (getchar() != EOF)
++nc;

printf("%ld\n", nc);

}

Es passiert aber gar nix, die Schleife wird nicht beendet und die Zeile printf("%ld\n", nc); wird niemals ausgeführt. Wie hat der Autor das gemeint?

Ich benutzte die neueste Version von xCode und das buch ist aus 1988, vielleicht liegt es daran?

MfG,

Micheal


EDIT: Problem gelöst. Anscheinend löst "CTRL+D" EOF aus (in Mac OS )und die Schleife wird beendet. Danke für eure Hilfe!
 
Zuletzt bearbeitet:
Danke,

@.::Zeus::.

Genau, das funktioniert. Aber was genau ist EOF?

@chk1987

Danke für den Link. Werde es mir durchlesen!

EDIT: Problem gelöst. Anscheinend löst "CTRL+D" EOF aus (in Mac OS )und die Schleife wird beendet. Danke für eure Hilfe!
 
Zuletzt bearbeitet:
Micheal schrieb:
Danke,

@.::Zeus::.

Genau, das funktioniert. Aber was genau ist EOF?

EOF ist ein Int-Wert mit dem Wert -1.

Micheal schrieb:
EDIT: Problem gelöst. Anscheinend löst "CTRL+D" EOF aus (in Mac OS )und die Schleife wird beendet. Danke für eure Hilfe!
CTRL+D wird als EOF gewertet bei fast allen Unix basierenden Systemen.

Micheal schrieb:
Es passiert aber gar nix, die Schleife wird nicht beendet und die Zeile printf("%ld\n", nc); wird niemals ausgeführt. Wie hat der Autor das gemeint?

Alles was du tippst wird in nen Puffer geschrieben und erst mit der Enter-Taste an getchar übergeben. getchar gibt dann immer 1Buchstaben (vom Anfang an; eigentlich nen Int-Wert, den du umwandeln müsstest) zurück, erreicht getchar das Ende des Puffers, dann gibt es -1 zurück (oder auch EOF)).
 
Zuletzt bearbeitet:
Zurück
Oben