第10回:ファイル(2)

 先週に引き続き,ファイル操作の練習をしましょう.

 キーボードからの入力(scanf),画面への出力(printf)と,基本は同じです.混乱している人が多いようですが,もう一度,scanf, printfを確認しましょう.


ファイル操作の基本

  1. ファイルを開く(オープン)
  2. ファイルに読み書きする
  3. ファイルを閉じる(クローズ)

  入力  scanf("%d", &n);

  出力  printf("%d", n);


○ キーボードから入力した数値をファイルに保存するプログラムを作成する

#include <stdio.h>

main()
{
    int a;
    FILE *fp;

    if((fp = fopen("test.txt", "w")) == NULL){
        printf("ファイルを作れませんでした");
        exit(1);
    }

    printf("ファイルに保存する数字:");
    scanf("%d", &a);

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

    fclose(fp);
}

○ ファイルに保存された数値を読み込み,画面に表示するプログラムを作成する

#include <stdio.h>

main()
{
    int a;
    FILE *fp;

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

    fscanf(fp, "%d", &a);

    printf("%d", a);

    fclose(fp);
}


複数のデータが書かれたファイルからデータを読み込むには,上記のプログラムの読み込みの部分をデータの数だけループさせればよい.ここで,問題となるのは,そのファイルにいくつのデータが保存されているのかわからない所である.そこで,ファイルの最初の行にデータの数が記入されているとすると,ファイルのデータを読み込むプログラムはどうなるだろう.

1行目 10 データの数
2行目 1 ここからデータ
11行目 20 ここまでデータ

データをエディタで作成して,読み込んでみよう.


演 習

今週も,先週と同じ課題です.

○ 角度を0度から359度まで1度ずつ変えたとき,sin, cos, tan の各値をコンマ","で区切ってファイルに出力するプログラムを作ろう.

データファイルができたら,エクセルに読み込んでみよう.