前提
下記の課題に対して「例外がスローされました」との表示が出てしまい、コンパイルに出力がされない状態です。
どなたか修正点を教えて頂けないでしょうか?
コンソールからパラメータを受け取り、ログを実行時間の昇順/降順に並べ替えて
コンソールに表示する
例)ASC を入力
2015/04/26 10:20:00, 5 + 6, 11
2015/04/27 14:30:51, 7 - 6, 1
2015/04/27 15:30:00, 7 + 8, 15
2015/04/28 14:30:51, 8 + 9, 17
例)DESC を入力
2015/04/28 14:30:51, 8 + 9, 17
2015/04/27 15:30:00, 7 + 8, 15
2015/04/27 14:30:51, 7 - 6, 1
2015/04/26 10:20:00, 5 + 6, 11
実現したいこと
コンパイルへの出力
ここに実現したいことを箇条書きで書いてください。
発生している問題・エラーメッセージ
例外がスローされました。
該当のソースコード
ソースコード
#include <stdio.h>
#include <time.h>
#include <string.h>
#include <stdlib.h>
int cmp_u(const void* a, const void* d) {
return (int)a - (int)d;
}
int cmp_d(const void* a, const void* d) {
return (int)d - (int)a;
}
int main() {
int num1, num2;
char op;
float answer;
int r,i;
FILE* fp;
char a[11];
char sin[9];
char ad;
fp = fopen("log.txt", "a"); if (fp == NULL) { printf("ファイルオープン失敗\n"); return -1; } while (1) { r = scanf("%d%c%d", &num1, &op, &num2); if (r != 3) { puts("input error"); return 1; } if (op == '+') { answer = num1 + num2; } else if (op == '-') { answer = num1 - num2; } else if (op == '*') { answer = num1 * num2; } else if (op == '/') { answer = (float)num1 / num2; } time_t t = time(NULL); struct tm* tm = localtime(&t); printf("%d/%02d/%02d ", tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday); printf("%02d:%02d:%02d ", tm->tm_hour, tm->tm_min, tm->tm_sec); printf("%d%c%d,%f\n", num1, op, num2, answer); fprintf(fp, "%d/%02d/%02d ", tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday); fprintf(fp, "%02d:%02d:%02d ", tm->tm_hour, tm->tm_min, tm->tm_sec); fprintf(fp, "%d%c%d,%f\n", num1, op, num2, answer); printf("計算を続けますか?"); scanf("%s\n", &a); if (strcmp(a, "no") == 0) { break ; } } fclose(fp); printf("ASC or DESC: "); scanf(" %s", &ad); if (strcmp(a, "no") == 0) { qsort(sin, 9, sizeof(int), cmp_u); } else { qsort(sin, 9, sizeof(int), cmp_d); } for (i = 0; i < 9; i++) { printf("%d\n", sin[i]); } return 0;
}

回答1件
あなたの回答
tips
プレビュー