C言語でCSVから特定の行だけを読み込む方法について解説

この記事では、C言語を使用してCSVファイルから特定の行だけを読み込む方法について解説します。

行番号を指定する方法や特定の条件を満たす行だけを読み込む方法など、具体的な手順とサンプルコードを通じて、初心者の方でも簡単に理解できるように説明します。

目次から探す

特定の行だけを読み込む方法

CSVファイルは、データを表形式で保存するための一般的なファイル形式です。

CSVファイルを読み込む際、全ての行を一度に読み込むのではなく、特定の行だけを読み込む方法があります。

以下では、行番号を指定する方法、特定の行番号を指定して読み込む方法、特定の条件を満たす行だけを読み込む方法について説明します。

行番号を指定する方法

CSVファイルの行番号は、1から始まる整数で表されます。

特定の行番号を指定して読み込むには、以下の手順を実行します。

  1. CSVファイルを開くためのファイルポインタを作成します。
  2. ファイルポインタを使用してCSVファイルを開きます。
  3. 読み込む行番号を指定します。
  4. 指定した行番号までファイルポインタを移動させます。
  5. 指定した行を読み込みます。

以下に、行番号を指定してCSVファイルから行を読み込むサンプルコードを示します。


#include <stdio.h>
int main() {
    FILE *file;
    char line[256];
    int lineNumber = 3; // 読み込む行番号
    file = fopen("data.csv", "r");
    if (file == NULL) {
        printf("ファイルを開けませんでした。\n");
        return 1;
    }
    for (int i = 1; i < lineNumber; i++) {
        fgets(line, sizeof(line), file); // 指定した行番号までファイルポインタを移動
    }
    fgets(line, sizeof(line), file); // 指定した行を読み込む
    printf("読み込んだ行: %s", line);
    fclose(file);
    return 0;
}

上記のコードでは、data.csvという名前のCSVファイルから3行目を読み込んでいます。

行番号を変更することで、他の行も読み込むことができます。

特定の行番号を指定して読み込む方法

特定の行番号を指定して読み込む場合、行番号を指定するための変数を用意し、その変数の値に応じて行を読み込む処理を行います。


#include <stdio.h>
int main() {
    FILE *file;
    char line[256];
    int lineNumber;
    printf("読み込む行番号を入力してください: ");
    scanf("%d", &lineNumber);
    file = fopen("data.csv", "r");
    if (file == NULL) {
        printf("ファイルを開けませんでした。\n");
        return 1;
    }
    for (int i = 1; i < lineNumber; i++) {
        fgets(line, sizeof(line), file); // 指定した行番号までファイルポインタを移動
    }
    fgets(line, sizeof(line), file); // 指定した行を読み込む
    printf("読み込んだ行: %s", line);
    fclose(file);
    return 0;
}

上記のコードでは、ユーザーに行番号を入力してもらい、その行番号の行をCSVファイルから読み込んでいます。

特定の条件を満たす行だけを読み込む方法

特定の条件を満たす行だけを読み込む場合、条件式を用意し、その条件式が真となる行のみを読み込む処理を行います。


#include <stdio.h>
#include <string.h>
int main() {
    FILE *file;
    char line[256];
    char keyword[256];
    printf("キーワードを入力してください: ");
    fgets(keyword, sizeof(keyword), stdin);
    keyword[strcspn(keyword, "\n")] = '\0'; // 改行文字を削除
    file = fopen("data.csv", "r");
    if (file == NULL) {
        printf("ファイルを開けませんでした。\n");
        return 1;
    }
    while (fgets(line, sizeof(line), file) != NULL) {
        if (strstr(line, keyword) != NULL) { // キーワードが含まれる行のみを読み込む
            printf("読み込んだ行: %s", line);
        }
    }
    fclose(file);
    return 0;
}

上記のコードでは、ユーザーにキーワードを入力してもらい、そのキーワードが含まれる行のみをCSVファイルから読み込んでいます。

以上が、特定の行だけを読み込む方法についての説明です。

行番号を指定する方法、特定の行番号を指定して読み込む方法、特定の条件を満たす行だけを読み込む方法を使い分けて、CSVファイルから必要な行を効率的に読み込むことができます。

目次から探す