C言語でCSVファイルを読み込む方法をわかりやすく解説

この記事では、C言語を使ってCSVファイルを読み込む方法を解説します。

CSVファイルのオープンからデータの分割、利用方法、型変換、ファイルのクローズまで、具体的な手順をわかりやすく説明します。

初心者の方でも簡単に理解できるように、サンプルコードや注意点も紹介します。

目次から探す

CSVファイルの読み込み方法

CSV(Comma Separated Values)ファイルは、データをカンマで区切って保存するテキストファイルの形式です。

C言語を使用してCSVファイルを読み込む方法を解説します。

ファイルのオープン

まず、CSVファイルを読み込むためには、ファイルをオープンする必要があります。

ファイルをオープンするには、fopen()関数を使用します。

#include <stdio.h>
int main() {
    FILE *file;
    file = fopen("data.csv", "r");
    if (file == NULL) {
        printf("ファイルをオープンできませんでした。\n");
        return 1;
    }
    // ファイルの読み込み処理
    fclose(file);
    return 0;
}

上記の例では、fopen()関数を使用してdata.csvというファイルを読み込みモード(r)でオープンしています。

ファイルが正常にオープンできなかった場合は、fopen()関数NULLを返します。

ファイルの読み込み

ファイルをオープンしたら、fgets()関数を使用してファイルからデータを読み込むことができます。

#include <stdio.h>
int main() {
    FILE *file;
    file = fopen("data.csv", "r");
    if (file == NULL) {
        printf("ファイルをオープンできませんでした。\n");
        return 1;
    }
    
    char line[256];
    while (fgets(line, sizeof(line), file) != NULL) {
        // 1行ずつのデータの処理
    }
    
    fclose(file);
    return 0;
}

上記の例では、fgets()関数を使用して1行ずつデータを読み込んでいます。

fgets()関数は、指定した文字数(上記の例では256文字)までのデータを読み込みます。

ファイルの終端に到達した場合、fgets関数はNULLを返すため、NULLを返すまでループすることで全文取得できます。

strtok()関数を使ったデータの分割

CSVファイルでは、データがカンマで区切られています。

C言語では、strtok()関数を使用して文字列を指定の区切り文字で分割することができます。

#include <stdio.h>
#include <string.h>
int main() {
    FILE *file;
    file = fopen("data.csv", "r");
    if (file == NULL) {
        printf("ファイルをオープンできませんでした。\n");
        return 1;
    }
    
    char line[256];
    while (fgets(line, sizeof(line), file) != NULL) {
        char *token;
        token = strtok(line, ",");
        while (token != NULL) {
            // 分割されたデータの処理
            token = strtok(NULL, ",");
        }
    }
    
    fclose(file);
    return 0;
}

上記の例では、strtok()関数を使用してカンマで区切られたデータを分割しています。

strtok()関数は、第1引数に分割する文字列を、第2引数に区切り文字を指定します。

strtok()関数は、分割されたデータの先頭ポインタを返し、次のデータがない場合はNULLを返します。

読み込んだデータの利用方法

CSVファイルから読み込んだデータは、文字列として扱われます。

必要に応じて、データを適切な型に変換する必要があります。

#include <stdio.h>
#include <string.h>
int main() {
    FILE *file;
    file = fopen("data.csv", "r");
    if (file == NULL) {
        printf("ファイルをオープンできませんでした。\n");
        return 1;
    }
    
    char line[256];
    while (fgets(line, sizeof(line), file) != NULL) {
        char *token;
        token = strtok(line, ",");
        while (token != NULL) {
            // 分割されたデータの利用方法
            int data = atoi(token); // 文字列を整数に変換
            printf("%d\n", data);
            token = strtok(NULL, ",");
        }
    }
    
    fclose(file);
    return 0;
}

上記の例では、atoi()関数を使用して文字列を整数に変換しています。

他のデータ型に変換する場合は、適切な関数を使用してください。

ファイルのクローズ

ファイルの読み込みが終わったら、fclose()関数を使用してファイルをクローズする必要があります。

#include <stdio.h>
int main() {
    FILE *file;
    file = fopen("data.csv", "r");
    if (file == NULL) {
        printf("ファイルをオープンできませんでした。\n");
        return 1;
    }
    
    // ファイルの読み込み処理
    
    fclose(file);
    return 0;
}

上記の例では、fclose()関数を使用してファイルをクローズしています。

ファイルをクローズすることで、メモリの解放や他のプログラムからのアクセス(書き込み)ができるようになります。

以上が、C言語でCSVファイルを読み込む方法の解説です。

ファイルのオープン、読み込み、データの分割、データの利用、データの型変換、ファイルのクローズの手順を順番に実行することで、CSVファイルのデータを取得することができます。

目次から探す