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.