何故ここだけ、fgetsが通らない? – プログラミング – Home

何故ここだけ、fgetsが通らない?
 
通知
すべてクリア

[解決済] 何故ここだけ、fgetsが通らない?


FG
 FG
(@FG)
ゲスト
結合: 21年前
投稿: 5
Topic starter  

VC++6でコンパイルは通るのに、
またFILEは間違い無くオープンしているのに、
Char CframeNo[15];
FILE *hff;  /* これは、FILEを
         開いた後、関数への
         パラメータとして
         渡している */

/* 関数内では */

if (fgetc(CFrameNo,16,hff) == NULL
{

}
のif文に来たらDebug Libraryからの
エラー。

その内容は、
Debug Asssertion Failed!

Filr: fgets.c
Line: 60
Expression str != NULL

For information on how your program can cause an assrtion failure, see the
Visual C++ documentation on asserts.

(Press Retry to debug the application)
とのこと。

他の箇所では、このような書き方のfgetsをしたところは通っているのに、
どこをどう直せば?


引用未解決
トピックタグ
ku
 ku
(@ku)
ゲスト
結合: 25年前
投稿: 312
 

Char CframeNo[15];
というのは
char CframeNo[15];
ということかな?
fgets(CframeNo, 16, hff)
だとしたら、2番目の16の意味を分かって使ってます?

今までうまくいっていたのだとしたら、
データの中にうまい具合に'\n'が含まれていたからだと思われます


返信引用
ぽこ
 ぽこ
(@ぽこ)
ゲスト
結合: 21年前
投稿: 23
 

ソースを見るとfgets()の定義は以下のようになってます。
char * fgets (_TSCHAR *string, int count, FILE *str)

これでstr != NULLでアサートが発生している
→strがNULLだからアサートが発生している。

ファイルのオープンに失敗しているのではないでしょうか?


返信引用
FG
 FG
(@FG)
ゲスト
結合: 21年前
投稿: 5
Topic starter  

ぽこさんのおっっしゃるのが、正しかったです。
皆さんいろいろありがとうございました。


返信引用
FG
 FG
(@FG)
ゲスト
結合: 21年前
投稿: 5
Topic starter  

ファイルに小数点の数字を羅列させようとしているのですが、
#QNAND01 #IND00-1という数字が並ぶのですが、
これはどういうことでしょうか?


返信引用
ぽこ
 ぽこ
(@ぽこ)
ゲスト
結合: 21年前
投稿: 23
 

とりあえず掲題の件はクローズされて、
新規に投稿し直してはいかがでしょうか?

#kuさんがご指摘された箇所も危険ですね^^;


返信引用
FG
 FG
(@FG)
ゲスト
結合: 21年前
投稿: 5
 

ありがとうございます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました