C:
Arbeiten mit CSV

Wie geht das:

CSV-Dateien lesen

Um eine CSV-Datei in C zu lesen, verwenden wir Standard-Datei-I/O-Funktionen zusammen mit Zeichenkettenmanipulationsfunktionen, um jede Zeile zu parsen. Unten finden Sie ein grundlegendes Beispiel dafür, wie eine CSV-Datei gelesen und die Felder jeder Zeile auf der Konsole ausgegeben werden.

#include <stdio.h>
#include <string.h>

int main() {
    FILE *fp = fopen("data.csv", "r");
    if (!fp) {
        printf("Datei kann nicht geöffnet werden\n");
        return 1;
    }

    char buf[1024];
    while (fgets(buf, 1024, fp)) {
        char *field = strtok(buf, ",");
        while(field) {
            printf("%s\n", field);
            field = strtok(NULL, ",");
        }
    }

    fclose(fp);
    return 0;
}

Beispiel data.csv:

Name,Alter,Beruf
John Doe,29,Softwareingenieur

Beispielausgabe:

Name
Alter
Beruf
John Doe
29
Softwareingenieur

In CSV-Dateien schreiben

Ähnlich beinhaltet das Schreiben in eine CSV-Datei die Verwendung von fprintf, um Daten in einem durch Kommas getrennten Format zu speichern.

#include <stdio.h>

int main() {
    FILE *fp = fopen("output.csv", "w");
    if (!fp) {
        printf("Datei kann nicht geöffnet werden\n");
        return 1;
    }

    char *header[] = {"Name", "Alter", "Beruf", NULL};
    for (int i = 0; header[i] != NULL; i++) {
        fprintf(fp, "%s%s", header[i], (header[i+1] != NULL) ? "," : "\n");
    }
    fprintf(fp, "%s,%d,%s\n", "Jane Doe", 27, "Datenwissenschaftlerin");

    fclose(fp);
    return 0;
}

Beispiel output.csv Inhalt:

Name,Alter,Beruf
Jane Doe,27,Datenwissenschaftlerin

Vertiefung

Das CSV-Format, obwohl scheinbar unkompliziert, bringt seine Nuancen mit, wie beispielsweise den Umgang mit Kommas innerhalb von Feldern und das Einschließen von Feldern in Anführungszeichen. Die gezeigten grundlegenden Beispiele berücksichtigen solche Komplexitäten nicht und behandeln mögliche Fehler nicht robust.

Historisch gesehen war die Arbeit mit CSV in C hauptsächlich manuell wegen der niedrigen Ebene der Sprache und des Mangels an eingebauten, hochstufigen Abstraktionen für solche Aufgaben. Dieses manuelle Management beinhaltet das Öffnen von Dateien, das Lesen von Zeilen, das Aufteilen von Zeichenketten und das Umwandeln von Datentypen nach Bedarf.

Obwohl die direkte Manipulation von CSV-Dateien in C wertvolle Lernerfahrungen im Umgang mit Datei-I/O und Zeichenkettenverarbeitung bietet, versprechen mehrere moderne Alternativen Effizienz und weniger fehleranfällige Prozesse. Bibliotheken wie libcsv und csv-parser bieten umfassende Funktionen zum Lesen und Schreiben von CSV-Dateien, einschließlich Unterstützung für zitierte Felder und benutzerdefinierte Trennzeichen.

Alternativ, wenn man in Ökosystemen arbeitet, die dies unterstützen, kann die Integration mit Sprachen oder Plattformen, die hochstufige CSV-Manipulationsfunktionen bereitstellen (wie Python mit seiner pandas-Bibliothek), ein produktiverer Weg für Anwendungen sein, die eine umfangreiche CSV-Verarbeitung erfordern. Dieser sprachübergreifende Ansatz nutzt die Leistungsfähigkeit und die Fähigkeiten von C in der Systemprogrammierung, während er die Benutzerfreundlichkeit anderer Sprachen für spezifische Aufgaben wie die CSV-Verarbeitung nutzt.