【C言語】ファイルの数値を読み込んで合計する

この記事では、C言語を使ってテキストファイルから数値を読み込み、その合計を計算する方法を学びます。

具体的には、ファイルの形式やデータの読み込みに使うfscanf関数、ループを使った数値の処理、そして合計値の出力方法について詳しく解説します。

プログラミング初心者の方でも理解しやすい内容になっていますので、ぜひ一緒に学んでいきましょう。

目次から探す

数値データの読み込み

C言語では、外部ファイルからデータを読み込むことができます。

特に数値データを扱う場合、テキストファイルの形式が重要です。

ここでは、数値データを含むテキストファイルの形式、fscanf関数の使い方、そしてループを用いたデータの読み込み方法について詳しく解説します。

テキストファイルの形式

数値データを格納するテキストファイルは、一般的に以下のような形式で作成されます。

10
20
30
40
50

この例では、各行に1つの整数が記載されています。

ファイルの形式は自由ですが、数値が改行で区切られていると、後の処理が簡単になります。

ファイル名は例えばnumbers.txtとしましょう。

fscanf関数の使い方

fscanf関数は、ファイルからデータを読み込むための関数です。

基本的な構文は以下の通りです。

int fscanf(FILE *stream, const char *format, ...);

ここで、streamはファイルポインタ、formatは読み込むデータの形式を指定します。

例えば、整数を読み込む場合は%dを指定します。

以下は、fscanfを使ってファイルから整数を読み込む基本的な例です。

#include <stdio.h>
int main() {
    FILE *file;
    int number;
    // ファイルを開く
    file = fopen("numbers.txt", "r");
    if (file == NULL) {
        printf("ファイルを開けませんでした。\n");
        return 1;
    }
    // 整数を読み込む
    fscanf(file, "%d", &number);
    printf("読み込んだ数値: %d\n", number);
    // ファイルを閉じる
    fclose(file);
    return 0;
}

このコードでは、numbers.txtから最初の整数を読み込み、その値を表示します。

ループを用いたデータの読み込み

複数の数値を読み込む場合、ループを使用するのが一般的です。

以下のコードは、ファイルからすべての整数を読み込み、合計を計算する例です。

#include <stdio.h>
int main() {
    FILE *file;
    int number;
    int sum = 0;
    // ファイルを開く
    file = fopen("numbers.txt", "r");
    if (file == NULL) {
        printf("ファイルを開けませんでした。\n");
        return 1;
    }
    // ファイルの終わりまでループ
    while (fscanf(file, "%d", &number) == 1) {
        printf("読み込んだ数値: %d\n", number);
    }
    // ファイルを閉じる
    fclose(file);
    return 0;
}

このコードでは、fscanfが成功する限りループを続け、各数値を合計していきます。

ファイルの終わりに達すると、fscanfは1以外の値を返すため、ループが終了します。

最終的に合計値が表示されます。

このように、C言語を使ってファイルから数値データを読み込み、合計を計算することができます。

ファイル操作はプログラミングにおいて非常に重要なスキルですので、ぜひ実践してみてください。

読み込んだ数値の合計

数値データをファイルから読み込んだ後は、それらの数値を合計する処理を行います。

このセクションでは、合計値を保持するための変数の宣言から、実際の加算処理、合計値の出力までを詳しく解説します。

合計値を保持する変数の宣言

まず、合計値を保持するための変数を宣言します。

C言語では、数値を扱うために適切なデータ型を選ぶ必要があります。

ここでは、整数の合計を計算するためにint型の変数を使用します。

int sum = 0; // 合計値を保持する変数

このように、sumという変数を宣言し、初期値を0に設定します。

これにより、数値を加算する際に正しい合計値を得ることができます。

数値の加算処理

次に、読み込んだ数値を合計する処理を行います。

ファイルから数値を読み込む際に、各数値をsumに加算していきます。

以下は、fscanf関数を使用して数値を読み込み、合計を計算する例です。

int number; // 読み込む数値を保持する変数
while (fscanf(file, "%d", &number) == 1) { // ファイルから数値を読み込む
    sum += number; // 読み込んだ数値を合計に加算
}

このコードでは、fscanf関数を使ってファイルから整数を読み込み、成功した場合(戻り値が1の場合)にその数値をsumに加算しています。

これをファイルの終わりまで繰り返すことで、全ての数値を合計することができます。

合計値の出力

合計値の計算が完了したら、結果を出力します。

printf関数を使用して、合計値をコンソールに表示します。

printf("合計値: %d\n", sum); // 合計値を出力

このコードを実行すると、読み込んだ数値の合計が表示されます。

完成したコード

ここまでの内容をまとめると、ファイルから数値を読み込み、合計を計算して出力するプログラムは以下のようになります。

#include <stdio.h>
int main() {
    FILE *file;
    int sum = 0; // 合計値を保持する変数
    int number; // 読み込む数値を保持する変数
    // ファイルを開く
    file = fopen("numbers.txt", "r");
    if (file == NULL) {
        printf("ファイルを開けませんでした。\n");
        return 1; // エラー終了
    }
    // 数値を読み込んで合計を計算
    while (fscanf(file, "%d", &number) == 1) {
        sum += number; // 読み込んだ数値を合計に加算
    }
    // 合計値を出力
    printf("合計値: %d\n", sum);
    // ファイルを閉じる
    fclose(file);
    return 0; // 正常終了
}

このプログラムでは、numbers.txtというファイルから整数を読み込み、その合計を計算して表示します。

ファイルが存在しない場合や開けない場合にはエラーメッセージを表示し、正常に処理が完了した場合には合計値を出力します。

これで、C言語を使ったファイルからの数値読み込みと合計計算の基本的な流れが理解できたと思います。

目次から探す