不具合・要望連絡・交流掲示板
【相談】実行エラー - suzy
2019/06/09 (Sun) 22:31:40
プログラムの実行が58行目で止まります。
http://p98074.php.xdomain.jp/Uploader/HitAndBlow.zip
Re: 【相談】実行エラー - 管理人 URL
2019/06/10 (Mon) 00:27:18
添付されていたファイル拝見しました。
HitAndBlow.cppの58行目で止まるということですね。
scanf("%s",input1);
上記内容でinput1のメモリ領域以上に文字列を入力しているため、
メモリ破壊されています。
説明が必要なら別途説明ページを作りますが、ここでは簡単に。
「input1」という箱のサイズは1byteです。
しかし、「scanf("%s",input1);」で入力されるデータの最小サイズは2byteです。
というのも、文字列には終端を示すためのNULL文字があるためです。
例えば、「1」と入力した場合、メモリ上では「31 00 …」となります。
(0x31はASCIIコードで「1」を示します。)
上記より、1byteの箱に2byteのデータを突っ込んだ結果、保持したメモリ領域を無視して書き込まれます。
これを指して、メモリ破壊といいます。
そして、52行目でその現象は発生しています。
対応策は、input1のサイズを大きくすると解決します。
試しに、input1~input3のサイズを2byteにしてみて下さい。
それで上手くいったら、今度はinput1に10等の2byteのデータを入力してみて下さい。
似たような現象が発生するはずです。