C言語でCSVファイルを読み込んで2次元配列に格納する方法を詳しく解説

目次から探す

2次元配列を使用してCSVデータを格納する方法

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

C言語では、CSVファイルのデータを2次元配列に格納することができます。

この記事では、2次元配列を使用してCSVデータを格納する方法について説明します。

まず、CSVファイルを読み込むためには、ファイルを開いてデータを読み込む必要があります。

以下のコードは、ファイルを開き、データを読み込むための基本的な手順です。


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

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

ファイルが正常に開けなかった場合は、エラーメッセージを表示してプログラムを終了します。

次に、ファイルからデータを読み込む処理を追加します。

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

以下のコードは、ファイルから1行ずつデータを読み込み、カンマで区切って2次元配列に格納する例です。


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_ROWS 100
#define MAX_COLS 100
int main() {
    FILE *file = fopen("data.csv", "r");
    if (file == NULL) {
        printf("ファイルを開けませんでした。\n");
        return 1;
    }
    char data[MAX_ROWS][MAX_COLS];
    int row = 0;
    while (fgets(data[row], sizeof(data[row]), file) != NULL) {
        // 改行文字を削除する
        data[row][strcspn(data[row], "\n")] = '\0';
        // カンマで区切ってデータを格納する
        char *token = strtok(data[row], ",");
        int col = 0;
        while (token != NULL) {
            // データを2次元配列に格納する
            strcpy(data[row][col], token);
            col++;
            // 次のトークンを取得する
            token = strtok(NULL, ",");
        }
        row++;
    }
    fclose(file);
    return 0;
}

上記のコードでは、fgets関数を使用してファイルから1行ずつデータを読み込んでいます。

読み込んだデータは、改行文字を削除してからカンマで区切り、2次元配列に格納されます。

strtok関数を使用してカンマで区切ったデータをトークンとして取得し、strcpy関数を使用して2次元配列に格納しています。

このようにして、CSVファイルのデータを2次元配列に格納することができます。

格納したデータは、後の処理で使用することができます。

目次から探す