C:
Arbeta med CSV

Hur man:

Läsa CSV-filer

För att läsa en CSV-fil i C använder vi standardfiler I/O-funktioner tillsammans med strängmanipulationsfunktioner för att tolka varje rad. Nedan är ett grundläggande exempel på att läsa en CSV-fil och skriva ut varje rads fält till konsolen.

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

int main() {
    FILE *fp = fopen("data.csv", "r");
    if (!fp) {
        printf("Kan inte öppna filen\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;
}

Exempel data.csv:

Name,Age,Occupation
John Doe,29,Software Engineer

Exempel på utfall:

Name
Age
Occupation
John Doe
29
Software Engineer

Skriva till CSV-filer

På liknande sätt innebär att skriva till en CSV-fil att använda fprintf för att spara data i ett komma-separerat format.

#include <stdio.h>

int main() {
    FILE *fp = fopen("output.csv", "w");
    if (!fp) {
        printf("Kan inte öppna filen\n");
        return 1;
    }

    char *headers[] = {"Name", "Age", "Occupation", NULL};
    for (int i = 0; headers[i] != NULL; i++) {
        fprintf(fp, "%s%s", headers[i], (headers[i+1] != NULL) ? "," : "\n");
    }
    fprintf(fp, "%s,%d,%s\n", "Jane Doe", 27, "Data Scientist");

    fclose(fp);
    return 0;
}

Exempel output.csv Innehåll:

Name,Age,Occupation
Jane Doe,27,Data Scientist

Djupdykning

CSV-formatet, även om det verkar enkelt, kommer med sina nyanser, såsom hantering av kommatecken inom fält och inkapsling av fält med citattecken. De grundläggande exemplen som visas tar inte hänsyn till sådana komplexiteter, ej heller hanterar de potentiella fel robust.

Historiskt sett har hanteringen av CSV-filer i C till stor del varit manuell på grund av språkets lågnivånatur och brist på inbyggda högnivåabstraktioner för sådana uppgifter. Denna manuella hantering inkluderar öppnande av filer, läsning av rader, delning av strängar och konvertering av datatyper vid behov.

Även om direkt manipulation av CSV-filer i C ger värdefulla lärandeupplevelser om fil-I/O och stränghantering, erbjuder flera moderna alternativ effektivitet och mindre felbenägna processer. Bibliotek som libcsv och csv-parser erbjuder omfattande funktioner för läsning och skrivning av CSV-filer, inklusive stöd för citat-inneslutna fält och anpassade avgränsare.

Alternativt, när du arbetar inom ekosystem som stöder det, kan integration med språk eller plattformar som tillhandahåller högnivåfunktioner för hantering av CSV (som Python med dess pandas-bibliotek) vara en mer produktiv väg för applikationer som kräver tung CSV-behandling. Detta tvärspråkliga tillvägagångssätt utnyttjar Cs prestanda och systemprogrammeringskapaciteter samtidigt som det utnyttjar användarvänligheten från andra språk för specifika uppgifter såsom CSV-hantering.