C:
CSVファイルの操作
方法:
CSVファイルの読み取り
C言語でCSVファイルを読み取るには、文字列の操作関数と一緒に標準ファイルI/O関数を使用し、各行を解析します。以下は、CSVファイルを読み取り、各行のフィールドをコンソールに出力する基本的な例です。
#include <stdio.h>
#include <string.h>
int main() {
FILE *fp = fopen("data.csv", "r");
if (!fp) {
printf("ファイルを開けません\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("ファイルを開けません\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形式は、一見すると単純ですが、フィールド内のカンマの処理やフィールドを引用符で囲むなどのニュアンスが含まれています。示された基本的な例は、そのような複雑さを考慮せず、また、潜在的なエラーを堅牢に処理するわけでもありません。
歴史的に、C言語でのCSV処理は、言語の低レベルな性質とこのようなタスクのための組み込みの高レベルの抽象化の欠如のため、主に手動で行われてきました。この手動管理には、ファイルのオープン、行の読み取り、文字列の分割、必要に応じたデータタイプの変換が含まれます。
C言語でCSVファイルを直接操作することは、ファイルI/Oや文字列の扱いに関する貴重な学習体験を提供しますが、libcsv
やcsv-parser
のようなライブラリは、引用符で囲まれたフィールドやカスタム区切り文字のサポートを含む、CSVファイルの読み書きのための包括的な機能を提供し、効率とエラープロセスの少ないプロセスを約束します。
代わりに、それをサポートするエコシステム内で作業する場合、高レベルのCSV操作機能を提供する言語やプラットフォーム(Pythonのpandas
ライブラリのように)と統合することは、CSV処理が多く必要なアプリケーションのためのより生産的なルートになることがあります。このクロス言語アプローチは、C言語のパフォーマンスとシステムプログラミングの能力を活用しつつ、CSV処理などの特定のタスクに対して他の言語の使いやすさを利用します。