Suche
Suche Menü

Schreiben & Lesen formatiert

int fprintf(FILE *fp, const char *format [, arguments]);

Das Schreiben von Informationen in Dateien ist der Bildschirmausgabe mit printf sehr ähnlich, wir verwenden hierfür fprintf. Im ersten Parameter wird der FILE-Zeiger (fp, filepointer) angegeben, welcher die Datei angibt, in die geschrieben werden soll. Der zweite Parameter enthält die zu schreibenden Daten. Der Rückgabewert ist bei einem Fehler kleiner 0, andernfalls die geschriebenen Bytes.

In diesem Beispiel sollen die Zahlen 0 – 9 in die Datei zahlen.txt geschrieben werden. Nach jeder Zahl wird noch ein Zeilenumbruch mit
geschrieben.

FILE *fp;
int i;

fp = fopen("zahlen.txt", "w");

if(fp == NULL) {
	printf("Datei konnte nicht geoeffnet werden.\n");
}else {
	// schreibe Zahlen
	for(i=0; i<10; i++) {
		fprintf(fp, "%d\n", i);
	}
	printf("Zahlen wurden geschrieben.\n");
	fclose(fp);
}

int fscanf(FILE *fp, char *format [, arguments]);

Das gleiche Spiel funktioniert mit dem Lesen von Informationen. Der Rückgabewert von fscanf ist bei einem Fehler oder Dateiende EOF, andernfalls die gelesenen Bytes.

Hier lesen wir unsere 10 Zahlen wieder aus, die wir in dem obigen Beispiel geschrieben haben. Wichtig ist, dass der Modus von w auf r geändert wird. Um einen Wert formatiert zu lesen wird fscanf verwendet. Dieser Wert wird in einer temporären Variable gespeichert und am Bildschirm ausgegeben.

FILE *fp;
int i, temp;

// oeffnen im Lesemodus
fp = fopen("zahlen.txt", "r");

if(fp == NULL) {
	printf("Datei konnte nicht geoeffnet werden.\n");
}else {
	for(i=0; i<10; i++) {
		fscanf(fp, "%d\n", &temp);
		printf("gelesen: %d\n", temp);
	}	
	fclose(fp);
}

gelesen: 0
gelesen: 1
gelesen: 2
gelesen: 3
gelesen: 4
gelesen: 5
gelesen: 6
gelesen: 7
gelesen: 8
gelesen: 9