VC++6のユーザーです。あるソースをデバッグ→実行で流して、ハングしましたが、止まった箇所がわかりません。一応、実行状態にはありますが、デバッグライブラリからの警告メッセージとして、Debug Assertion Failed File:fputc Line:45 Expression:str!=NULL と出ており、事実上、プログラムが停止したことになっています。解除するため、中止を押しても、再試行を押しても、無視を押しても、何処が悪いのかわからないのですが、デバッグ→例外処理のオプションをうまく使うことによって、何とか、ハングの箇所をつきとめられないでしょうか? 何か、付属ファイルを忘れかなあ、とも思うのですが、片方のPCでこの現象が出て、もうかたいっぼうのPCで出ていないので、困っております。
runtime-libraryのソースがインストールしてあればわかります。
ちょいと調べてみましたら:
int __cdecl fputc (
int ch,
FILE *str
)
{
int retval;
_ASSERTE(str != NULL); ←ココ!
なのでfputcに食わせた FILE* が NULL であったことによるassertですね。
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200511/05110033.txt
放置せんでね。
適当なとこで改行してください。
みづらいし、回答してくれる人もくれなくなるよ。
(放置も悪い印象を植え付けます。)
取り敢えず、改行は大事。
実際、私も最初見る気が失せかけました。
取り敢えず、runtime-libraryのソースはインストールしておいた方が良いです。
今時のPCはHDDが大きいので大して負担にはならないでしょうし。
で、入れておくとassertの内容からソースが追えて原因の特定がやりやすくなります。
>fputcに食わせた FILE* が NULL であったことによるassertですね。
という所からするとfopenした時にエラーチェックしていないのでは?
>(放置も悪い印象を植え付けます。)
御意。
>>(放置も悪い印象を植え付けます。)
> 御意。
二度と答えてなんかやるもんか って思うもんね。
# 思ってるし。
ちょっと本題から外れてしまいますが、
> 適当なとこで改行してください。
> みづらいし、回答してくれる人もくれなくなるよ。
これに関しては投稿フォームに一言「自動改行されませんので適宜改行を入れて下さい」と
一言書いてあるといいと思いました。
みんなに迷惑をかけて申し訳ないです。
携帯から打ってるし。
ところで、ランタイム・ライブラリーのソースの
インストールの仕方はどうするのでしょうか?
VC++6でデバッグしています。
VC++6インストーラで。
で、解決したのかしら?
> 携帯から打ってるし。
それがどうした。 だから許せとでも?
解決です。
どう解決したのか位は書いといてください。
何が原因でどう対処したかを。
もしかして後でこのスレッドを見る事になるかもしれない人には
何をどう解決したのか書いていないのであまり役に立たないスレッドになります。
まあ、解決案の羅列くらいにはなってますけれどね。
> 携帯から打ってるし。
から、
質問の答えさえもらえれば、どう解決したかは打つのめんどくさいし
かかなくていいや。
とでも考えているのでしょうか?
そんなことしていれば、当然誰も回答してくれなくなります。
(自業自得)