コマンドライン入力と記載している項目は4つのテキストデータを設けており、このテキストの中から指定したボートの貸出時間の総計を出力できるようにしたいです。
【実行例1】 「コマンドライン入力」 boat1.txt 「標準入力」 A 「標準出力」 1:03 【実行例2】 「コマンドライン入力」 boat3.txt 「標準入力」 D 「標準出力」 2:10 【実行例3】 「コマンドライン入力」 boat4.txt 「標準入力」 E 「標準出力」 2:20 【実行例4】 「コマンドライン入力」 boat4.txt 「標準入力」 G 「標準出力」 0:00
現状下記のプログラムを作成しましたが、実行結果が下記の通りとなってしまいます。
これを解決したいのですが、修正箇所・アドバイスの方をお願いします。
#include <stdio.h> #define LINESIZE 256 int main(int argc, char *argv[]) { FILE *fp; char line[LINESIZE]; char b, io; int h, m, tm[26]={0}; if ((fp = fopen(argv[1], "r")) == NULL) { printf("Can't open the file.\n"); return 1; } for(; fgets(line, LINESIZE, fp)!=NULL;){ sscanf(line, "%c %c %d:%d", &b, &io, &h, &m); switch(io){ case 'I': tm[b-'A'] += 60*h+m; break; case 'O': tm[b-'A'] -= 60*h+m; break; } } printf("%d:%02d\n", tm[b-'A']/60, tm[b-'A']%60); fclose(fp); return 0; }
コマンドライン入力 boat2.txt 標準入力 E 提出プログラムの標準出力 2:27↵ 正しいの標準出力 0:00↵ コマンドライン入力 boat3.txt 標準入力 C 提出プログラムの標準出力 2:10↵ 正しい標準出力 1:55↵
テキストの内容は以下の通りです。
bort1.txt
A O 09:00
B O 09:05
B I 09:30
A I 10:03
bort2.txt
A O 09:00
B O 09:05
B I 09:30
C O 09:31
A I 10:03
C I 11:58
bort3.txt
A O 09:10
C O 09:25
A I 09:50
C I 10:05
D O 10:15
D I 10:55
A O 11:30
C O 12:00
A I 12:45
C I 13:15
D O 13:20
A O 13:30
D I 14:05
A I 14:15
D O 14:55
D I 15:40
bort4.txt
C O 09:05
E O 09:15
E I 09:45
A O 09:45
D O 09:50
C I 09:55
B O 10:10
D I 10:25
E O 10:30
A I 10:35
C O 10:45
B I 10:50
C I 11:10
B O 11:10
E I 11:15
D O 11:45
A O 12:05
C O 12:10
B I 12:15
D I 12:20
A I 12:30
C I 12:55
C O 13:20
E I 13:30
A O 13:40
E O 12:55
C I 13:55
B O 14:00
A I 14:20
B I 14:45
E O 15:10
D O 15:15
C O 15:20
E I 15:40
D I 15:55
C I 16:00
C O 16:45
D O 16:50
A O 16:55
A I 17:30
C I 17:40
D I 17:50