
下のプログラムなのですが、
色々と調べていくとfindnext();でフリーズしてしまうことがわかりました。
しかし、なぜフリーズするのかわからないのです。
dir.hの書いてある通りに使っているつもりなのですが・・・
助言お願いいたします。
仕事にいるので早急にお願いいたします。
ちなみにコンパイラはBC4.5++です。
/*****************************************************************/
test.c
/*****************************************************************/
#include <stdio.h>
#include <dir.h>
#include <string.h>
#define MAX 10
int main(){
structffblk*data;
inti;
charname[MAX];
charpath[MAX];
strcpy(path,"c:\\*.*");
if(findfirst(path,data,0)==0){
while(1){
strcpy(name,data->ff_name);
printf("%s",name);
if(findnext(data)!=0)break;
}
}
return 0;
}
No.4ベストアンサー
- 回答日時:
ディレクトリはattribに指定しないといけません。
ヘルプを見てください。
または、dir.hを覗いてみて下さい。
#include <dir.h>
int findfirst(const char *pathname, struct ffblk *ffblk, int attrib);
ここの最後の引数attribをしていてください。
つぎのように定義してあるようです。
FA_DIRECディレクトリ
では、
お返事有難うございます。
何とかできるようになりました。
これって、コンパイラのヘルプに細かく載っているのですね。
大変有難うございます。
No.3
- 回答日時:
朝から、Cの勉強とは関心ですネ!
10年前まではチョコチョコとCで書いていましたが、
今は引退しています。
自信はありませんが、
次の文
>strcpy(path,"c:\\*.*");
"c:\\*.*"をそのパス名にして下さい。
No.2
- 回答日時:
#define MAX 10
この大きさは大丈夫でしょうか?
普通は
#define MAX 256
と大きめに書くようですが?
findnext();はANCI Cではないのでしょうか?
Win32 Nt専用です。
この回答への補足
有難うございます。
MAX値を多くすると動きました。
あと、ついでにですが、あるディレクトリ下にある、
ディレクトリ名を参照するにはどうしたらよいでしょうか?
findnext();はどうやらファイル名の取得の見みたいでしたので、
実際には、ディレクトリを取得したいのですが、何かありませんでしょうか?
No.1
- 回答日時:
構造体がポインタで宣言されていて、実体がないからではないですか?
まずそこから修正してみましょう。
あとは、直値(0等)ではなく、定義された値を使いましょう。
この回答への補足
すみませんが、具体的にどういうことでしょう?
関数はディレクトリの値を返すだけのものだと思っていたのですが、
違うのでしょうか?
findfirst();から値を引き取ってきているのだと思っていたのですが・・・
ひょっとして、
findnext();はANCI Cではないのでしょうか?
ANSI Cだと聞いてやっているのですが違うのでしょうか?
もし違うのなら、ANCI Cでディレクトリ名や、
ファイル名を取得する方法があれば教えていただけませんでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
なぜ、C++の標準ヘッダをインク...
-
2次元vectorのerase?
-
gccでコンパイル時のエラー
-
OpenCVでRAW画像(カラー)を開...
-
PICでダイナミック点灯 なぜか...
-
std::map の const 修飾について
-
std::wstringのメモリリークに...
-
C++で、テキストファイルを一行...
-
最早開始時間と最遅完了時刻を...
-
20'(角度)の計算がわかりま...
-
信頼区間の1.96や1.65ってどこ...
-
Aの値からBの値を除するとは??
-
数字以外が入力されたらエラー...
-
値差の%計算方法について
-
「Aに対するBの割合」と「Aに対...
-
#defineが使用するメモリ領域に...
-
cout関数を使っているのですが...
-
2÷3などの余りについて
-
構造体の勉強中です 合計点の高...
-
main.c:7:43: warning: implici...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VC++で文字列から任意の文字を...
-
C++でShowCursorを使いたい。
-
enumの値から定義名を文字列化...
-
空ENTERの判別
-
VxWorks 6.4ソケット接続につい...
-
C++で、テキストファイルを一行...
-
switch文のエラーについて
-
_tcscat がうまくいきません(V...
-
C言語からgnuplot呼び出し
-
C言語のエラーを修正したい
-
std::map の const 修飾について
-
なぜ、C++の標準ヘッダをインク...
-
vc++の使い方について
-
gccでコンパイル時のエラー
-
このプログラミング誰か教えて...
-
STLでポインタのリストをsort()...
-
構造体配列のvectorへの変換と...
-
#defineの使い方について
-
#define中の#のエスケープ
-
リモートデスクトップの接続元I...
おすすめ情報