In der Uni hat gerade die Vorlesung für die Programmiersprache C begonnen. Dabei taucht ein kleines Beispiel auf, das Wörter, Zeilen und Zeichen einer .c Datei zählen soll. Habe das Programm auch schön ordentlich geschrieben, analysiert und (wie ich meine) verstanden.

#include <stdio.h>

main()
{

int temp,zeichen,woerter,zeilen,status;
cnum status {OUT, IN};
FILE *fd;

fd = fopen ("countchar3.c","r");
status = OUT;
zeichen = woerter = zeilen = 0;

while ((temp=getc(fd))!=EOF)
{
++zeichen;

if (temp == '\n')
{
++zeilen;
}

if (temp == ' ' || temp == '\n' || temp == '\t')
{
status = OUT;
}
else if (status == OUT)
{
status = IN;
++woerter;
}
}

printf ("Zeichen=%d\tWörter=%d\tZeilen=%d\t",zeichen,woer ter,zeilen);

}
gcc -o countchar3 countchar3.c

countchar3.c: In function `main':
countchar3.c:7: `cnum' undeclared (first use in this function)
countchar3.c:7: (Each undeclared identifier is reported only once
countchar3.c:7: for each function it appears in.)
countchar3.c:7: parse error before "status"
countchar3.c:11: `OUT' undeclared (first use in this function)
countchar3.c:29: `IN' undeclared (first use in this function)

Er kennt den Typ cnum nicht. Offenbar soll das ein Typ sein, der entweder IN oder OUT ist. Aber das nimmt der Compiler so nicht an.

Zudem frage ich mich warum der status vorher auch schon als Integer deklariert wird.