C:
עבודה עם קובצי CSV

איך לעשות:

קריאה מקבצי CSV

לקרוא קובץ CSV ב-C, אנו משתמשים בפונקציות קלט/פלט קובצים סטנדרטיות יחד עם פונקציות עיבוד מחרוזות כדי לנתח כל שורה. למטה דוגמה בסיסית של קריאת קובץ CSV והדפסת שדותיו של כל שורה לקונסול.

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

int main() {
    FILE *fp = fopen("data.csv", "r");
    if (!fp) {
        printf("Can't open file\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;
}

דוגמת data.csv:

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

דוגמת פלט:

Name
Age
Occupation
John Doe
29
Software Engineer

כתיבה לקבצי CSV

באופן דומה, כתיבה לקובץ CSV כוללת שימוש ב-fprintf כדי לשמור נתונים בפורמט מופרד בפסיקים.

#include <stdio.h>

int main() {
    FILE *fp = fopen("output.csv", "w");
    if (!fp) {
        printf("Can't open file\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;
}

תוכן דוגמת output.csv:

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

צלילה עמוקה

הפורמט CSV, למרות להיותו כנראה פשוט, מגיע עם העדפות משלו, כמו לטפל בפסיקים בתוך שדות ולסגור שדות במרכאות. הדוגמאות הראשוניות המוצגות לא לוקחות בחשבון סיבוכיות כאלו, וגם לא מטפלות בטעויות באופן קפדני.

בהיסטוריה, היידוע של קבצי CSV ב-C היה בעיקר ידני בזכות הטבע הרמה-נמוכה של השפה והחוסר באבסטרקציות גבוהות מובנות למשימות כאלו. הניהול הידני כולל פתיחת קבצים, קריאת שורות, פיצול מחרוזות, והמרת סוגי נתונים לפי הצורך.

כאשר נגיע לעבודה ישירה עם קבצי CSV ב-C היא מספקת ניסיון לימודי ערך על קלט/פלט של קבצים ועיבוד מחרוזות, מספר אלטרנטיבות מודרניות מבטיחות יעילות ותהליכים פחות שגויים. ספריות כמו libcsv ו-csv-parser מציעות פונקציות מקיפות לקריאה וכתיבה של קבצי CSV, כולל תמיכה בשדות במרכאות ומפרידים מותאמים אישית.

כחלופה, בעת עבודה בתוך אקוסיסטמים שתומכים בכך, אינטגרציה עם שפות או פלטפורמות שמספקות פונקציות גבוהות לעיבוד CSV (כמו Python עם ספריית ה-pandas שלה) יכולה להיות מסלול יותר פרודוקטיבי ליישומים הדורשים עיבוד CSV כבד. גישה זו בין-שפה מנצלת את יכולות הביצועים והתכנות של מערכות של C, תוך שימוש בנוחות משפות אחרות למשימות ספציפיות כמו עיבוד CSV.