OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

findnext();について

  • すぐに回答を!
  • 質問No.174353
  • 閲覧数334
  • ありがとう数1
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 66% (22/33)

下のプログラムなのですが、
色々と調べていくと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;
}
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.4
レベル11

ベストアンサー率 33% (131/392)

ディレクトリはattribに指定しないといけません。
ヘルプを見てください。
または、dir.hを覗いてみて下さい。

#include <dir.h>
int findfirst(const char *pathname, struct ffblk *ffblk, int attrib);

ここの最後の引数attribをしていてください。
つぎのように定義してあるようです。
FA_DIRECディレクトリ
では、
お礼コメント
tb4104

お礼率 66% (22/33)

お返事有難うございます。
何とかできるようになりました。
これって、コンパイラのヘルプに細かく載っているのですね。
大変有難うございます。
投稿日時 - 2001-11-25 09:58:47
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.1
レベル11

ベストアンサー率 46% (145/312)

構造体がポインタで宣言されていて、実体がないからではないですか? まずそこから修正してみましょう。 あとは、直値(0等)ではなく、定義された値を使いましょう。 ...続きを読む
構造体がポインタで宣言されていて、実体がないからではないですか?
まずそこから修正してみましょう。
あとは、直値(0等)ではなく、定義された値を使いましょう。
補足コメント
tb4104

お礼率 66% (22/33)

すみませんが、具体的にどういうことでしょう?

関数はディレクトリの値を返すだけのものだと思っていたのですが、
違うのでしょうか?

findfirst();から値を引き取ってきているのだと思っていたのですが・・・

ひょっとして、
findnext();はANCI Cではないのでしょうか?
ANSI Cだと聞いてやっているのですが違うのでしょうか?

もし違うのなら、ANCI Cでディレクトリ名や、
ファイル名を取得する方法があれば教えていただけませんでしょうか?
投稿日時 - 2001-11-25 07:11:53


  • 回答No.2
レベル11

ベストアンサー率 33% (131/392)

#define MAX 10 この大きさは大丈夫でしょうか? 普通は #define MAX 256 と大きめに書くようですが? findnext();はANCI Cではないのでしょうか? Win32 Nt専用です。 ...続きを読む
#define MAX 10

この大きさは大丈夫でしょうか?
普通は
#define MAX 256
と大きめに書くようですが?

findnext();はANCI Cではないのでしょうか?
Win32 Nt専用です。
補足コメント
tb4104

お礼率 66% (22/33)

有難うございます。
MAX値を多くすると動きました。

あと、ついでにですが、あるディレクトリ下にある、
ディレクトリ名を参照するにはどうしたらよいでしょうか?

findnext();はどうやらファイル名の取得の見みたいでしたので、
実際には、ディレクトリを取得したいのですが、何かありませんでしょうか?
投稿日時 - 2001-11-25 07:53:01
  • 回答No.3
レベル11

ベストアンサー率 33% (131/392)

朝から、Cの勉強とは関心ですネ! 10年前まではチョコチョコとCで書いていましたが、 今は引退しています。 自信はありませんが、 次の文 >strcpy(path,"c:\\*.*"); "c:\\*.*"をそのパス名にして下さい。 ...続きを読む
朝から、Cの勉強とは関心ですネ!
10年前まではチョコチョコとCで書いていましたが、
今は引退しています。
自信はありませんが、

次の文
>strcpy(path,"c:\\*.*");

"c:\\*.*"をそのパス名にして下さい。
補足コメント
tb4104

お礼率 66% (22/33)

お返事有難うございます。
やってみたのですが出来ませんでした。
Cドライブのルートなら
"C:\\"
でよろしいのでしょうか?
投稿日時 - 2001-11-25 08:27:48
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ