質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

0回答

236閲覧

過去のデータだけを表示したいのですが、コンパイルは通るのですが、実行で異常終了します。

退会済みユーザー

退会済みユーザー

総合スコア0

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2017/09/12 08:22

編集2022/01/12 10:55

過去のデータだけを表示したいのですが、コンパイルは通るのですが、実行で異常終了します。コードのどこが悪いのでしょうか.したにある実行結果を得たいのですが、こんな風にしたらどうですかと指摘を受けて書き直したのですが、エラーが出て実行できない状態です。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秒

省略

*/

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

can110

2017/09/12 08:33

print_score_dataに渡しているポインタ変数「score_data」はどの変数(実体)を指しているかを追記ください。
yohhoy

2017/09/12 08:38 編集

いっぱい気になる箇所がありますが...とりあえず:1)fread_score_data関数は呼び出さないのですか?2)ファイル名dtfile2は使わないのですか?3)デバッグ実行もしくはデバッガを使ったことはありますか?4)インデントは整えるクセをつけたほうが良いです。
退会済みユーザー

退会済みユーザー

2017/09/12 10:44

canさん、yohhoyさん、いろいろありがとうございます。もう少し勉強してからまたお願いします。勝手で申し訳ありません。頭がこんがらがってきました。
退会済みユーザー

退会済みユーザー

2017/09/12 10:46

raccyさん yambejpさん勝手で申し訳ありません。頭がこんがらがってきました。もう少し勉強してからまたお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問