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

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

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

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

3回答

915閲覧

C++デバッグ後エラー

012304

総合スコア13

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/09/29 13:53

編集2021/09/30 04:04

デバッグ後のエラーが出てしまいどうやればエラーを回避できるのかわかりません教えていただけませんでしょうか?

#pragma once //fとはfileを示す class STAGE { public: struct {//二つ作ってるのは計算用と描画用 int Typ[STAGE_MAX_X][STAGE_MAX_Y];//数字を書いてそれに適応させるようにする0がblock 1がキャラという風に int Typ_Exp[POS_MAX_X][POS_MAX_Y]; }Blo; void Read() { FILE* fp_stage_1_1; fp_stage_1_1 = fopen("stage_1_1.txt", "r"); //"r" Read //'w' write(all) //'a' write(add) int i = 0; for (int y = 0; y < STAGE_MAX_Y; y++) { for (int x = 0; x < STAGE_MAX_X; x++) { (void)fscanf_s(fp_stage_1_1, "%d", &Blo.Typ[x][y]); } } fclose(fp_stage_1_1); } void Out(int* PosX) { int pic = 0; for (int x = 0; x < STAGE_MAX_X; x++) { for (int y = 0; y < STAGE_MAX_Y; y++) { switch (Blo.Typ[x][y]) { case 0: pic = Pic.Bac; break; case 1: pic = Pic.Blo0; break; case 2: pic = Pic.Blo1; break; case 3: pic = Pic.Blo2; break; case 4: pic = Pic.Ene; } DrawGraph(CELL * x * *PosX, CELL * y, pic, TRUE); } } } private: }; STAGE Sta;

イメージ説明
多分テキストファイルがエラーだと思うのですが合っているでしょうか?メモ帳でやっているのですがこれをした方がいいというのはありますでしょうか?
ご教授していただきありがとうございます
本当に申し訳ありません試したことを書くのを忘れてしまい、指摘されてしまいました
fp_stage_1_1の部分でエラーが起きているみたいで原因はfp_stage_1_1らしいのですが、メモでの数字に何かエラーになるようなことが起きてしまったということなのでしょうか?メモ帳の書式の問題なのでしょうか?そこでの原因がデバッグした後、中止再試行無視、という選択肢ができ再試行を押したらfp_stage_1_1の値が0×00000000000000<NULL>となっていたためエラーがその部分であることが判明したのですが、そのファイルの何が問題なのかがつかめずじまいになってしまいました。そしてエラーっぽいと思われる場所に写真の赤丸の所にブレークポイントを設定して続行を押したら

ハンドルされない例外が 0x00007FF70B86175C (GameProg.exe) で発生しました: 無効なパラメーターを致命的と見なす関数に無効なパラメーターが渡されました。

ハンドルされていない例外、というエラーっぽいものになりこれをどうすればいいか、教えてもらえませんでしょうか?その場所というのが

(void)fscanf_s(fp_stage_1_1, "%d", &Blo.Typ[x][y]); →}

この波括弧部分であったり、fclose()をforloopの上にやればそこが例外がスローされました、というエラーぽいものに変わってしまうため共通するのがfp_stage_1_1なのですが、ここから行き詰ってしまいどうしたらいいのでしょうか?

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

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

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

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

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

thkana

2021/09/29 22:45

単なる言葉の違和感についてですけれど。 デバッグというのはプログラムの不具合を発見して修正することですから、 「デバッグ」が終わったならエラーもなくなっているはずですし、 エラーがでるなら「デバッグ」は終わっていません。
dodox86

2021/09/30 00:20

どうでもよい(≒よくない)のですが、驚くほどに句読点の無い質問の文章で、今どきの若い方なのでしょうか。(使われているのがDXライブラリっぽいので、とにかくゲームを作り上げたい中学生とか高校生の方かな?)
guest

回答3

0

newしたポインターとか、
fopenしたリソースとか
必ず1回のみ解放しましょう

投稿2021/09/29 16:29

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

VisualStudio使ってるなら、ブレークポイントを設定してそこで実行を止めることができます。
また、そこから1行づつ実行させることもできますんで、そうやってデバッグしていきましょう

投稿2021/09/29 14:10

y_waiwai

総合スコア87784

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

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

012304

2021/09/29 14:52

わかりました本当にありがとうございます
guest

0

ベストアンサー

C++

1 void Read() { 2 FILE* fp_stage_1_1; 3 fp_stage_1_1 = fopen("stage_1_1.txt", "r"); //*** 一回 open したファイルを 4 //"r" Read 5 //'w' write(all) 6 //'a' write(add) 7 8 int i = 0; 9 for (int y = 0; y < STAGE_MAX_Y; y++) { 10 for (int x = 0; x < STAGE_MAX_X; x++) { 11 (void)fscanf_s(fp_stage_1_1, "%d", &Blo.Typ[x][y]); 12 } 13 fclose(fp_stage_1_1); //*** STAGE_MAX_Y 回 close してるぞ! 14 } 15 }

[追記] コードが差し替えられてた...

fp_stage_1_1 = fopen("stage_1_1.txt", "r");

fopenに失敗したと思われます。
Visual Studio / Debug-mode では "stage_1_1.txt" は
プロジェクト・ディレクトリに置かにゃならん(デフォルトでは)のですが、それはOK?

投稿2021/09/29 14:05

編集2021/09/29 23:11
episteme

総合スコア16614

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

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

dodox86

2021/09/29 23:16

「プロジェクト・ディレクトリ」が現時点の質問者さんに通じるか疑問ですが、エラー(ファイルオープン失敗)でもそのまま処理を続行するゴリ押し感も問題ありますね。
episteme

2021/09/30 05:15

BestAnswerつけるのはいいけど、結局なにが問題で/どう解決したんよ?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問