C言語のきほん「ファイルの入出力(2)」

スポンサーリンク
Cプログラミング C言語

先のブログでは、fgets関数を使用することで、テキストファイルの中身を一行ずつ読み込むことができた。

今回は、テキストファイルの中身を読み込む関数のもう一つの例として、fscanf関数を取り上げる。

各行に数字が書かれたテキストファイルを読み込み、それぞれの値を足して表示するプログラムをご紹介しよう。

なお、本プログラムは、Windows 11 Home(23H2)上で、 Visual Studio Code(1.91.1)を使用して作成し、gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0でコンパイルしている。

読み込むテキストファイル

25
34
56
77
90
112
21
//数字が書かれたテキストファイルを読み込み、それぞれの値を足して表示するプログラム

#include <stdio.h>

int main(void)
{
    FILE* fp = NULL;
    char line[128];

    fp = fopen("scores.txt","r");
    if (fp == NULL) {
        printf("ファイルを開けませんでした。\n");
        return 1;
    }

    int total = 0;
    int i;
    while (fscanf(fp,"%d",&i) != EOF)
    {
        printf("%dを読み込みました。\n",i);
        total += i;
    }

    printf("合計は%dです。\n",total);

    fclose(fp);
    return 0;
    
}

実行結果

25を読み込みました。
34を読み込みました。
56を読み込みました。
77を読み込みました。
90を読み込みました。
112を読み込みました。
21を読み込みました。
合計は415です。

fscanf関数は、変換指定を使って読み込む。ここでは、”%d”としているので、文字列を整数として読み込む。

読み込む値がなくなると、EOFという値を返す。

読み込んだ値は、変数iに格納され、それを変数totalに加算して合計を求めている。

参考)「C言語 新版 ゼロからはじめるプログラミング」 三谷 純 (著) 翔泳社

コメント

タイトルとURLをコピーしました