実行すると以下のようになります。fopenしていったん読み出したデータを fprintfかfscanfかfreadでデータをどかかに入れてそこからよみだすのですか。 よく出てくるエラーです。解決出来たり、できなかったりしています。 whileの中が悪いのかなと思っています。よろしくお願いします。 コード #include <stdio.h> #include <stdlib.h> #include <time.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"; char dtfile2[]= "LACKNUM2.DAT";// ラックナンバーサーチ最短時間用のファイル typedef struct { int tm_year; int tm_mon; int tm_mday; int tm_hour; int tm_min; int tm_sec; double score; } TIME_DATA; //過去のトレーニング情報を取得・表示 void get_rireki(int *count) { FILE *fp; // これまでの履歴を指すポインタ double score; //これまでの履歴の所要時間 int i; TIME_DATA *rireki;; if ((fp = fopen(dtfile, "rb")) == NULL) { printf("ファイルがありません。\n\n"); exit(1); } else { rireki=(TIME_DATA*)malloc(sizeof(TIME_DATA)*(*count)); printf("\n過去の履歴\n-------------------------- \n"); while((i = fread(rireki, sizeof(TIME_DATA), 1, fp)) > 0 ){ printf("%d年 %d月 %d日 %d時 %d分 %d秒\n", rireki->tm_year + 1900, rireki->tm_mon + 1, rireki->tm_mday,rireki->tm_hour, rireki->tm_min, rireki->tm_sec); fread(&score, sizeof(double), 1, fp); printf("得点(所要時間)は%.1f秒\n\n",rireki->score); (*count)++; } printf("count1は%d\n\n", *count); } getchar(); fflush(stdout); fclose(fp); printf("count2は%d\n\n", *count); return ; } int main(void) { int countC=0; int *count; count=&countC; get_rireki(count); return 0; } C:\MinGW\users\chap09\kadai>gcc -I. -o kad9_3rireki2 kad9_3rireki C:\MinGW\users\chap09\kadai>kad9_3rireki2 過去の履歴 -------------------------- 892417950年 540160289月 959520823日 891304224時 940182841分 16863 得点(所要時間)は0.0秒 892223094年 808585742月 824194609日 824194080時 909189177分 16863 得点(所要時間)は0.0秒 .....省略.... count1は29
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。