#include <stdio.h>
#include <stdlib.h> 
#define LINESIZE 256               // 1行の長さの上限
#define BUFFERSIZE (LINESIZE + 1)  // バッファのサイズ

int main() {
  FILE *inputfile;         // 入力ストリームを入れる変数
  char linebuffer[BUFFERSIZE];      // 1行分の文字列を入れるためのバッファ
  double total=0.0;        // 合計値

  inputfile = fopen("b.dat", "r");    // ファイルを読み出し用にオープン(開く)
  if (inputfile == NULL) {           // オープンに失敗した場合
    printf("cannot open\n");         // エラーメッセージを出して
    exit(1);                         // 異常終了
  }

  while (1) {    // 無限ループ
    double x;    // 読み出した実数値を入れる変数 
    char *s;     // fgets の返した値を入れる変数

    s = fgets(linebuffer, BUFFERSIZE, inputfile);  // ファイルから1行読む
    if (s == NULL) {          // もしファイルの終端に達していたら
      break;                  // while ループから抜け出す
    }
    sscanf(linebuffer, "%lf", &x);  // 文字列からdouble型の数値を読み取る
    total = total + x;        // 読んだ数値を total に加算
  }

  fclose(inputfile);          // ファイルをクローズ(閉じる)
  printf("Total = %f\n", total);  // 合計を表示
  return 0;
}
