Dateiverarbeitung

In C können Dateien gelesen, geschrieben und manipuliert werden. Diese Lektion behandelt die grundlegende Dateiverarbeitung mit FILE*, fopen, fclose, fscanf, fprintf und anderen Funktionen.

1. Öffnen und Schließen von Dateien

Dateien werden mit fopen geöffnet und mit fclose wieder geschlossen.
FILE *fp;
fp = fopen("datei.txt", "r"); // Datei im Lese-Modus öffnen
if(fp == NULL) {
    perror("Fehler beim Öffnen");
    return 1;
}

// Datei verarbeiten

fclose(fp); // Datei schließen

2. Modi beim Öffnen

3. Lesen aus Dateien

Lesen erfolgt zeilenweise oder formatbasiert.
char line[100];
while(fgets(line, sizeof(line), fp) != NULL) {
    printf("%s", line);
}

4. Schreiben in Dateien

Schreiben erfolgt formatbasiert mit fprintf oder zeichenweise mit fputc.
FILE *fp = fopen("out.txt", "w");
if(fp != NULL) {
    fprintf(fp, "Zahl: %d\n", 42);
    fclose(fp);
}

5. Zufälliger Zugriff (Random Access)

Mit fseek und ftell kann an eine bestimmte Position in der Datei gesprungen werden.
fseek(fp, 0, SEEK_END);   // ans Ende der Datei springen
long size = ftell(fp);       // aktuelle Position = Dateigröße
fseek(fp, 0, SEEK_SET);     // zurück zum Anfang

6. Fehlerbehandlung bei Dateien

Prüfe immer, ob die Datei erfolgreich geöffnet wurde und handle Fehler.
FILE *fp = fopen("nicht_existiert.txt", "r");
if(fp == NULL) {
    perror("Datei konnte nicht geöffnet werden");
    return 1;
}

7. Zusammenfassung