アプリ版:「スタンプのみでお礼する」機能のリリースについて

ファイルを読み込もうとプログラムを作ったのですが
変なエラーがでてくるのですが。なにがおかしいのですか?
#include <stdio.h>
int main (void)

{
FILE *fp;
char nyuryoku_moji[256];
char deta_name[256];

gets(deta_name);

fp = fopen (deta_name,"r");
fgets(nyuryoku_moji,256,fp);

printf("%s",nyuryoku_moji);
fclose(fp);

return 0;
}

です、エラーはDebug Libraryとでるのですが・・・
わかる方がいらっしゃったら教えてください。
お願いします。
-----環境--------------
os windows NT
soft MicrosoftVisualC++
-----------------------

A 回答 (3件)

現象を確認しました。

(WIN2000、VC++6.0)
fgetsの関数の処理を見たところパラメータチェックでエラーになり
そのようなエラーが表示されています。
fgetsの第1引数がNULLまたは第3引数がNULLの時に起こります。
つまり、#1で書いたようにfpがNULLになっていると思われます。
入力しているファイル名が違っているのではないでしょうか?
cドライブのルートのaaa.txtの場合には「c:\aaa.txt」と入力すれば
fpにファイルポインタが帰ります。

fpがNULLの場合には、openできていないので読み込まないようにしなければ
いけません。
    • good
    • 0

#1です。


>deta_nameにファイル名が入っていません。
ファイル名は、入力するのでしたね。失礼しました。
getsで得られたdeta_nameには、正しく入っているのでしょうか?

この回答への補足

エラーは
Debug Assertion Failed!
program:
File:fgets.c
Line:60

Expression:str != NULL

です。

補足日時:2003/01/30 22:03
    • good
    • 2

deta_nameにファイル名が入っていません。


よって、openでエラーになっていると思います。
通常fopenでの戻り値を見てNULLのときには、openできていないので
先の処理へは行かないようにします。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!