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

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

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

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

Q&A

解決済

C言語のコンパイルへの出力について

saito_666
saito_666

総合スコア4

C

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

1回答

0グッド

0クリップ

409閲覧

投稿2022/11/14 06:23

前提

下記の課題に対して「例外がスローされました」との表示が出てしまい、コンパイルに出力がされない状態です。
どなたか修正点を教えて頂けないでしょうか?

コンソールからパラメータを受け取り、ログを実行時間の昇順/降順に並べ替えて
コンソールに表示する
例)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;

}

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

2022/11/14 08:08

こちらの質問が他のユーザーから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました。

episteme

2022/11/14 06:35

> 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に変換していいんですか?
jimbe

2022/11/14 06:41 編集

>C言語のコンパイルへの出力 て何でしょう。 C言語は(一般的に)コンパイラで、コンパイルは「翻訳すること」です。それに「出力」とは? >「例外がスローされました」との表示が出てしまい ご提示のコードを C コンパイラに渡したらコンパイラからそう表示されたということでしょうか。その一文だけでしょうか。他にも色々でていませんか? (まともなコンパイラなら、何が問題なのかを具体的に表示してくるはずです。) どのようなコンパイラをどのように使っているのか(コマンドラインでどう入力したのか)等の環境・操作手順等もご提示頂いたほうが良いように思います。 また、コードは「コードのマークダウン」を用いてご提示ください。 用いないと、コード内の記号がフォーマット指示と解釈されて、表示がおかしくなったりコピペ時に必要な記号が無かったりしてしまいます。
jimbe

2022/11/14 07:49 編集

・・・何か、ログと関係無い四則演算するコードが混じっていますけど。 あぁ、「四則演算したログ」を出すのですね、失礼しました。 >コンソールからパラメータを受け取り、ログを実行時間の昇順/降順に並べ替えて >コンソールに表示する なら、ファイルへの出力は要らないということでしょうか。
ozwk

2022/11/15 01:08

スタックオーバーフロー(リンク上記)の方で解決済み

回答1

1

ベストアンサー

文字列入力時の scanf のパラメータや、qsort 前の if 等で間違いがあるようです。
sin に値が入ってないですし qsort には int だと伝えてますが char 配列ですし 本当に 9 個の値が入るかどうかも分かりません(1個だけだったらどうするのでしょうか。)

投稿2022/11/14 06:52

編集2022/11/14 06:55
jimbe

総合スコア10837

spoofy_dragon👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

同じタグがついた質問を見る

C

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