Setzen eines EOF ?!

Unicate

Erfahrenes Mitglied
Hallo, ich habe versucht einen EOF zu setzen. Ich habe gelesen, das ich die -1 als solches verwenden kann.
Allerdings habe ich ein Problem, wenn ich die Datei zu lesen und schreiben öffne, dann schreibt er nicht... warum auch immer

Weiß jemand rat?

hier ist mein Testprogramm:

Code:
#include <stdio.h>
#include <conio.h>
int main()
{
	FILE *fp;
	int i=0, iZn = 0;
	printf("Zeile Nummer:");
	scanf("%i", &iZn);
	char cBuffer[199] = "";
	
	if(!(fp = fopen("test.txt", "rt+")))
	{
		printf("Fehler!\n");
	}
	else
	{
		/* Springe zur iZn'ten Zeile */
		fgets(cBuffer, sizeof(cBuffer), fp);
		while(i < iZn)
		{
			i++;
			fgets(cBuffer, sizeof(cBuffer), fp);
			printf("%s", cBuffer);
		}
		// funktioniert nicht! Warum?
		fprintf(fp, "schreibe rein");
		
		fputc(-1, fp);
		fclose(fp);
	}

	getch();
	
}
 
Hi.

Im C Standard (vergraben ;)) steht irgendwo drin, das wenn man eine Datei im Update-Modus geöffnet hat, das nach einer Leseoperation immer entweder ein flush bzw. ein seek gemacht werden muß bevor man versucht in die Datei zu schreiben.

Allerdings bezweifle ich das es dir was bringen wird eine -1 in die Datei zu schreiben. Für so etwas gibt es die (nicht-Standard) Funktionen truncate bzw. ftruncate. Die sind aber nicht immer verfügbar. Standardkonform müßte man die Datei soweit wie nötig einlesen und dann wieder neu schreiben. (jedenfalls fällt mir spontan keine andere Möglichkeit ein)

Gruß
 
Zurück