C:
การทำงานกับ CSV

วิธีการ:

การอ่านไฟล์ CSV

ในการอ่านไฟล์ CSV ด้วยภาษา C, เราใช้ฟังก์ชัน I/O ไฟล์มาตรฐานควบคู่กับฟังก์ชันการจัดการสตริงเพื่อแยกวิเคราะห์แต่ละบรรทัด. ด้านล่างเป็นตัวอย่างพื้นฐานของการอ่านไฟล์ 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 ให้ประสบการณ์การเรียนรู้ที่มีค่าเกี่ยวกับไฟล์ I/O และการจัดการสตริง, มีทางเลือกสมัยใหม่หลายอย่างที่สัญญาว่าจะมีประสิทธิภาพและกระบวนการที่น้อยผิดพลาด. ห้องสมุดเช่น libcsv และ csv-parser ให้ฟังก์ชันครอบคลุมสำหรับอ่านและเขียนไฟล์ CSV, รวมถึงการสนับสนุนฟิลด์ที่ถูกอ้างถึงด้วยเครื่องหมายคำพูดและตัวคั่นที่กำหนดเอง.

นอกจากนี้, เมื่อทำงานในระบบนิเวศที่รองรับ, การรวมกับภาษาหรือแพลตฟอร์มที่ให้ฟังก์ชันการจัดการ CSV ระดับสูง (เช่น Python กับไลบรารี pandas ของมัน) อาจเป็นทางเลือกที่เหมาะสมกว่าสำหรับการใช้งานที่ต้องการการประมวลผล CSV อย่างหนัก. ทางเลือกข้ามภาษานี้ใช้ประโยชน์จากประสิทธิภาพและความสามารถในการเขียนโปรแกรมระบบของ C ขณะที่ใช้ความสะดวกในการใช้งานจากภาษาอื่นสำหรับงานเฉพาะเช่นการจัดการ CSV.