C言語のきほん「身長と体重を読み込んでファイルに書き込む」

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

先回に引き続き、ファイルにデータを書き込むプログラムをご紹介しよう。

キーボードから、名前、身長と体重を読み込んで、それらをファイルに書き込むプログラムである。

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

//身長と体重と読み込んでファイルに書き込むプログラム

#include <stdio.h>
#include <string.h>

#define NAME_LEN 100

int main(void) {

    FILE *fp;
    if((fp = fopen("height-weight2.dat","w")) == NULL) //オープン
        printf("ファイルをオープンできません\n");
    else {
        char name[NAME_LEN];    //名前
        double height;          //身長
        double weight;          //体重
        
        for (int i = 0; ; i++)
        {
            int flag;
            printf("%d人目のデータを入力しますか(YES-1/NO-0)\n",i+1);
            scanf("%d",&flag);
                       
            if(flag == 0)   break;

            printf("名前:");    scanf("%s",name);
            printf("身長:");    scanf("%lf",&height);
            printf("体重:");    scanf("%lf",&weight);
            
            fprintf(fp,"%s %f %f\n",name,height,weight);
           
           
        }
        fclose(fp);                 //クローズ
        
    }
    return 0;
}

実行結果

1人目のデータを入力しますか(YES-1/NO-0)
1
名前:Ueda
身長:150.0
体重:45.7
2人目のデータを入力しますか(YES-1/NO-0)
1
名前:Asano
身長:167.0
体重:56.7
3人目のデータを入力しますか(YES-1/NO-0)
1
名前:Tanaka
身長:175.0
体重:68.5
4人目のデータを入力しますか(YES-1/NO-0)
1
名前:Wada
身長:182.0
体重:75.2
5人目のデータを入力しますか(YES-1/NO-0)
1
名前:Nishida
身長:155.0
体重:50.3
6人目のデータを入力しますか(YES-1/NO-0)
0

書き出し後のファイルの内容

Ueda 150.000000 45.700000
Asano 167.000000 56.700000
Tanaka 175.000000 68.500000
Wada 182.000000 75.200000
Nishida 155.000000 50.300000

ファイルへの書き込みに使っているfprintf関数は、標準出力ストリームへの出力を行うprintf関数と同様の処理を任意のストリームに対して行う関数である。

使い方は、例えば、ストリームfpに対して、整数値xの値を10進数で書き込むには、

fprintf(fp,"%d",x);

のように行う。

参考)新・解きながら学ぶC言語 第2版  柴田望洋 (監修・著)、 由梨かおる(著)

コメント

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