過去のデータだけを表示したいのですが、コンパイルは通るのですが、実行で異常終了します。コードのどこが悪いのでしょうか.したにある実行結果を得たいのですが、こんな風にしたらどうですかと指摘を受けて書き直したのですが、エラーが出て実行できない状態です。1)fread_score_data関数の使うのか使わないのかわかりません。
ファイル名dtfile2はとりあえず使いません。デバッグで調べようとしたのですが
慣れてないのでエラーが出て、step実行できません。gdb a.outでa.outがないと出ているので対処法がわかりません。過去の履歴がLUCKNUM.DATに入っていてそれを表示したのですが。たくさんヘッダーファイルがありますが、後から実行時間の短い順(10個)に並べたり、最近の10回を表示するためのものです。
すみませんが、具体的にどうすればいいか教えていただければありがたいです。
コード #include <stdio.h> #include <time.h> #include <float.h> #include <ctype.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h> #include "getputch.h" #define MAX_STAGE 3 #define swap(type, x, y) do{ type t = x; x = y; y = t; } while (0) #define MAX_NUM 10 char dtfile[] = "LACKNUM.DAT"; // ファイル名LACKNUM.DATの形式は 年 / 月 / 日 / 時 / 分 / 秒 // // 2012 10 18 17 28 35......前回の終了時刻 // 31.1000000 ...................前回までの最短時間 char dtfile2[] = "LACKNUM2.DAT"; // 最高記録用のファイル double score2; typedef struct tm TIME_DATA; typedef struct { TIME_DATA time; double score; } SCORE_DATA; SCORE_DATA *score_data; size_t fread_score_data(SCORE_DATA *score_data, FILE *fp) { return fread(&score_data->time, sizeof(TIME_DATA), 1, fp) && fread(&score_data->score, sizeof(double), 1, fp); fclose(fp); } void print_score_data(SCORE_DATA *score_data) { FILE *fp; if ((fp = fopen(dtfile, "rb")) == NULL) { printf("ファイルを作成します。\n\n"); score = DBL_MAX; /* float.hに定義されている。double型で表現できる最大値を表すマクロDBL_MAX */ } else { printf( "%d年 %d月 %d日 %d時 %d分 %d秒 \n", score_data->time.tm_year + 1900, score_data->time.tm_mon + 1, score_data->time.tm_mday, score_data->time.tm_hour, score_data->time.tm_min, score_data->time.tm_sec ); printf("得点(所要時間)は %.1f秒です。\n\n", score_data->score ); } fclose(fp); } double get_score(SCORE_DATA *score_data) { return score_data->score; } int main(void) { FILE *fp; init_getputch(); //ライブラリの初期処理235p fp = fopen(dtfile, "rb"); print_score_data(score_data); term_getputch(); return 0; }
/* 実行結果(errorで実行できない)
C:\MinGW\users\chap09\kadai>gcc -I. -o kadai9-1-7 kadai9-1-7.c pdcurses.a
C:\MinGW\users\chap09\kadai> kadai9-1-7
過去の履歴
2015年 10月 27日 19時 9分 59秒
得点(所要時間)は11.0秒
2016年 1月 4日 19時 15分 11秒
得点(所要時間)は8.0秒
2016年 1月 4日 19時 16分 8秒
得点(所要時間)は9.0秒
省略
*/
あなたの回答
tips
プレビュー