![](https://seccdn.libravatar.org/avatar/8576ac1b72af7a8d7391dbaa48c37e65.jpg?s=120&d=mm&r=g)
Am Die, 2002-02-26 um 10.00 schrieb Konrad Neitzel:
Hallo Liste!
"D.Wolpert"
schrieb: in C koennte man sowas etwa so formulerien:
while ( (c=getc(stdin)) != EOF ) putc(c,stdout);
Hmmm - das mag bei ASCII-Files vielleicht funktionieren, aber sonst fliegt man hier schön auf die Schnauze. Irrtum:
man getc: fgetc(), getc() and getchar() return the character read as an unsigned char cast to an int or EOF on end of file or error.
Ich denke, dass es da so schöne f* Funktionen gibt, wie z.B. feof! Also mehr sowas wie ein while (!feof(stdin))!
Oder auch gerne gesehen: Ich versuche x Zeichen in einen Puffer zu lesen und kriege zurück, wie viele Zeichen gelesen werden konnten bzw. einen Fehlercode!
Das obrige ist aber blöd, da ich einen char-Code erwarte. man getc:
int getc(FILE *stream); Beachte: int!
Dieser kann aber nur zwischen 0 und 255 sein. Diese Zeichen können aber auch vorkommen. Aus stdio.h: # define EOF (-1)
D.h EOF = 0xFFFFFFFF und nicht 0xFF Der Knackpunkt ist "int c; while((c=getc(stdin)) != EOF)". Nur weil viele "char c" verwenden und sich dann wundern, warum ihr tollen IO-Routinen mit bestimmten Dateien nicht tun, wäre feof zu bevorzugen, da es weniger fehlerträchtig ist. Ralf