以下の青字で示されたプログラムを mule で打ち込み、"algo5.c" というファイル名で保存し、コンパイルし、実行せよ。

/* algo5.c (pp.44〜45)
 *
 * 日付別合計
 * コントロールブレーク
 */

/*
 * string.h: 文字列関数のプロトタイプ宣言(strcpy(), ctrcmp())
 * strcpy(s1, s2): 文字列s2をs1にコピー
 * strcmp(s1, s2): 文字列s1とs2を比較し、s1<s2のとき <0;
 *                 s1=s2のとき =0; s1>s2のとき >0;
 */

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

int main(void) {
  int flag,sum,suryo;
  char hizuke[6],hokan[6];
  FILE *fin;

  /* 読み込み用のファイルを開く */
  if((fin=fopen("algo5.dat","r"))==NULL) {
    printf("Cannot open %s\n","algo5.dat");
    exit(1);
  }
  /* 初期化 */
  sum=0;
  /* データを読み込み、ファイル終端のときフラッグを立てる */
  if (fscanf(fin,"%s %d",hizuke, &suryo)==EOF)
    flag=1;
  /* 他の場合には、日付(hizuke)をhokanに保存し、フラッグを降ろす */
  else {
    strcpy(hokan, hizuke);
    flag=0;
  }
  /* フラッグが立っている限り処理を繰り返す */
  while (flag!=1) {
    sum += suryo;
    /* データを読み込み、ファイル終端のとき
     * 画面に結果を出力
     */
    if (fscanf(fin,"%s %d",hizuke, &suryo)==EOF) {
      printf("%s, %d\n",hokan, sum);
      flag=1;
    }
    /* 一つ前の日付と新規に読みこんだ日付が異なるとき
     * 今までのデータを画面に出力し、新しい日付をhokanに保存
     */
    if (strcmp(hizuke, hokan)!=0) {
      printf("%s, %d\n",hokan, sum);
      strcpy(hokan, hizuke);
      sum=0;
    }
  }
  fclose(fin);
  return 0;
}

"algo5.dat" というファイル名で以下の7行のデータを入れたファイルを作成せよ。
このデータ・ファイルは上記のプログラムで読みこまれる。

07/01 1000
07/01 2000
07/01 5000
07/03 3000
07/03 2000
07/05 4000
07/05 3000