Zitat:
Zitat von Der_Mosch
Wieso sollte Microsoft mir die Fragen beantworten? Es gibt eine logische Grundstruktur hinter der Schleife.
|
Weil Microsoft die Library und somit auch eof programmiert hat ? Wobei interessant wäre wie sich Linux hier verhält.
Code:
#include <io.h>
#include <stdio.h>
int main()
{
FILE *file;
char ch;
if(!(file = fopen("c:\\test.txt", "rb")))
{
printf("Unable to open file\n");
return 1;
}
while(!feof(file))
{
ch = (char)fgetc(file);
printf("%c", ch);
}
fclose(file);
getchar();
return 0;
}
Selbst diese Standard-C Version funzt nicht einwandfrei, es wird ein zusätzliches Leerzeichen ausgegeben, der Code sollte eigentlch Linux-Kompatibel sein, falls das also mal jemand testen will ob es sich dort ebenso verhält.
Die MSDN sagt zu feof() folgendes
Zitat:
The feof function returns a nonzero value after the first read operation that attempts to read past the end of the file. It returns 0 if the current position is not end of file. There is no error return.
|
Also ist dieses Verhalten wohl beabsichtigt und man MUSS den Rückgabewert der get-Funktion auswerten falls einem die 0 ( Leerzeichen ) am Ende stört.