- ベストアンサー
findnext();のフリーズについて調査
- findnext();を使用するとプログラムがフリーズする現象が発生しました。
- dir.hに書かれている通りに使用していますが、原因がわかりません。
- BC4.5++でのプログラムです。早急に解決策を教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ディレクトリはattribに指定しないといけません。 ヘルプを見てください。 または、dir.hを覗いてみて下さい。 #include <dir.h> int findfirst(const char *pathname, struct ffblk *ffblk, int attrib); ここの最後の引数attribをしていてください。 つぎのように定義してあるようです。 FA_DIREC ディレクトリ では、
その他の回答 (3)
- brogie
- ベストアンサー率33% (131/392)
朝から、Cの勉強とは関心ですネ! 10年前まではチョコチョコとCで書いていましたが、 今は引退しています。 自信はありませんが、 次の文 >strcpy(path,"c:\\*.*"); "c:\\*.*"をそのパス名にして下さい。
補足
お返事有難うございます。 やってみたのですが出来ませんでした。 Cドライブのルートなら "C:\\" でよろしいのでしょうか?
- brogie
- ベストアンサー率33% (131/392)
#define MAX 10 この大きさは大丈夫でしょうか? 普通は #define MAX 256 と大きめに書くようですが? findnext();はANCI Cではないのでしょうか? Win32 Nt専用です。
補足
有難うございます。 MAX値を多くすると動きました。 あと、ついでにですが、あるディレクトリ下にある、 ディレクトリ名を参照するにはどうしたらよいでしょうか? findnext();はどうやらファイル名の取得の見みたいでしたので、 実際には、ディレクトリを取得したいのですが、何かありませんでしょうか?
- KojiS
- ベストアンサー率46% (145/312)
構造体がポインタで宣言されていて、実体がないからではないですか? まずそこから修正してみましょう。 あとは、直値(0等)ではなく、定義された値を使いましょう。
補足
すみませんが、具体的にどういうことでしょう? 関数はディレクトリの値を返すだけのものだと思っていたのですが、 違うのでしょうか? findfirst();から値を引き取ってきているのだと思っていたのですが・・・ ひょっとして、 findnext();はANCI Cではないのでしょうか? ANSI Cだと聞いてやっているのですが違うのでしょうか? もし違うのなら、ANCI Cでディレクトリ名や、 ファイル名を取得する方法があれば教えていただけませんでしょうか?
お礼
お返事有難うございます。 何とかできるようになりました。 これって、コンパイラのヘルプに細かく載っているのですね。 大変有難うございます。