Einzelnen Beitrag anzeigen
  #4  
Alt 06-09-2007, 18:25
Benutzerbild von Gonzo
Gonzo Gonzo ist offline
Cabal

 
Registriert seit: Dec 2002
Ort: Berlin
Beiträge: 2.476
Gonzo hat noch keine Bewertung oder ist auf 0
Style: USA
Zitat:
Zitat von Der_Mosch Beitrag anzeigen
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.
__________________


MfG Gonzo
Mit Zitat antworten