Cara Membaca File CSV di C

click fraud protection

Lihat dokumentasi program yang menyediakan file CSV. Tentukan jumlah bidang di setiap baris, serta format setiap bidang. Misalnya, jika sebuah program menyediakan CSV dengan data berikut: 1, "test", 34.5 Anda akan menandai tiga bidang: satu bilangan bulat, satu string, dan satu angka floating point.

Buat struktur yang berisi anggota data untuk setiap bidang yang diidentifikasi dalam CSV. Menggunakan contoh baris 1, "test", 34.5 yang disediakan, Anda memerlukan struktur berikut: struct data { int col1; karakter *kol2; mengapung col3; };

Buat metode di program Anda yang akan menangani pembacaan file CSV. Ini harus dapat diakses oleh seluruh program Anda, dan mungkin perlu bekerja pada struktur data umum sehingga metode lain dapat mengakses data yang telah dibaca. Lewati parameter dengan referensi untuk menghilangkan kebutuhan akan nilai kembalian. Contoh prototipe fungsi adalah: void ParseCSV( char *nama file, data& input );

Buat objek file, yang akan dibaca dalam data, menggunakan kode berikut: FILE * pInput;

Buat buffer karakter yang cukup besar untuk menampung satu baris file dalam satu waktu. Karena kendala bahasa, cara paling mudah untuk melakukannya adalah dengan mendeklarasikan array karakter dengan ukuran yang cukup besar, seperti dengan: #define BUFFER_SIZE 1024

Buka file dengan kode berikut, dan tetapkan ke objek FILE yang Anda buat sebelumnya: pInput = fopen("filename," "r")

fgets (buf, ukuran (buf), pInput)

Parsing CSV menggunakan fungsi "strtok". Buat string karakter baru untuk menunjuk ke token, dan inisialisasi dengan data dari baris yang dibaca di atas: char *tok = strtok (buf, ",")

Ubah token yang diterima menjadi data yang sesuai. Menggunakan baris contoh: 1, "test", 3,45 ubah data yang terdapat dalam "tok" menjadi bilangan bulat menggunakan kode berikut: row.col1 = atoi (tok);

Untuk pembacaan berikutnya dari baris yang sama, berikan "strtok" parameter NULL alih-alih string buffer yang Anda baca sebelumnya: tok = strtok (NULL, ",") Kemudian, konversikan token ke tipe data yang sesuai. Menggunakan contoh baris 1,"test",3.45 Kode parsing untuk satu baris adalah: char *tok = strtok (buf, ","); baris.col1 = atoi (tok); tok = strtok(NULL, ","); baris.col2 = tok; tok = strtok(NULL, ","); baris.col3 = atof (tok);

Lakukan ini untuk semua entri di setiap baris CSV. Fungsi "strtok" akan terus menyediakan data di antara nilai koma hingga kehabisan data di buffer, di mana ia akan mengembalikan NULL. Ini akan menunjukkan bahwa Anda telah selesai dengan garis.

Peringatan

Fungsi "fopen" dapat mengembalikan NULL jika ada kesalahan--pastikan untuk memeriksa file Anda sebelum menggunakannya. Dalam beberapa kasus, token yang diberikan mungkin tidak sesuai dengan format yang diharapkan. Pastikan untuk memeriksa data Anda sebelum mengonversi secara membabi buta dengan memeriksa nilai kesalahan umum (string kosong, NULL, dll).