下のプログラムなのですが、
色々と調べていくと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.1
- 回答日時:
構造体がポインタで宣言されていて、実体がないからではないですか?
まずそこから修正してみましょう。
あとは、直値(0等)ではなく、定義された値を使いましょう。
この回答への補足
すみませんが、具体的にどういうことでしょう?
関数はディレクトリの値を返すだけのものだと思っていたのですが、
違うのでしょうか?
findfirst();から値を引き取ってきているのだと思っていたのですが・・・
ひょっとして、
findnext();はANCI Cではないのでしょうか?
ANSI Cだと聞いてやっているのですが違うのでしょうか?
もし違うのなら、ANCI Cでディレクトリ名や、
ファイル名を取得する方法があれば教えていただけませんでしょうか?
No.2
- 回答日時:
#define MAX 10
この大きさは大丈夫でしょうか?
普通は
#define MAX 256
と大きめに書くようですが?
findnext();はANCI Cではないのでしょうか?
Win32 Nt専用です。
この回答への補足
有難うございます。
MAX値を多くすると動きました。
あと、ついでにですが、あるディレクトリ下にある、
ディレクトリ名を参照するにはどうしたらよいでしょうか?
findnext();はどうやらファイル名の取得の見みたいでしたので、
実際には、ディレクトリを取得したいのですが、何かありませんでしょうか?
No.4ベストアンサー
- 回答日時:
ディレクトリはattribに指定しないといけません。
ヘルプを見てください。
または、dir.hを覗いてみて下さい。
#include <dir.h>
int findfirst(const char *pathname, struct ffblk *ffblk, int attrib);
ここの最後の引数attribをしていてください。
つぎのように定義してあるようです。
FA_DIRECディレクトリ
では、
お返事有難うございます。
何とかできるようになりました。
これって、コンパイラのヘルプに細かく載っているのですね。
大変有難うございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
- PHP imageフォルダに、画像をリサイズして保存する時のファイル名を変更したい 1 2023/05/30 11:39
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
構文エラーが出ているのですが...
-
#defineの使い方について
-
openCVで動画が読み込めないエ...
-
なぜ、C++の標準ヘッダをインク...
-
指定した文字を削除したい
-
#include "fstream.h"
-
#define中の#のエスケープ
-
Linux Ubuntu19.10でQt5.14.1の...
-
STLでポインタのリストをsort()...
-
JPEGやPNGが読めるLoadImage関数
-
テイラー展開とその精度について
-
構造体配列のvectorへの変換と...
-
ファイル読み込みとmap処理
-
【C++】ヘッダ内でstringを格納...
-
コーディング
-
C言語からgnuplot呼び出し
-
構造体に決められた文字列を入...
-
mapの初期化
-
snprintfが使用できない。
-
Cでのパケットキャプチャについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
構文エラーが出ているのですが...
-
VC++で文字列から任意の文字を...
-
enumの値から定義名を文字列化...
-
switch文のエラーについて
-
空ENTERの判別
-
なぜ、C++の標準ヘッダをインク...
-
【C++】ヘッダ内でstringを格納...
-
C++での <iostream.h>と<iostre...
-
#include "fstream.h"
-
#define中の#のエスケープ
-
JPEGやPNGが読めるLoadImage関数
-
リモートデスクトップの接続元I...
-
CStringとString
-
string型のフォーマット書式指...
-
std::map の const 修飾について
-
VHDLのsignedとunsignedの違いは?
-
このプログラミング誰か教えて...
-
構造体配列のvectorへの変換と...
-
指定した文字を削除したい
-
構造体に決められた文字列を入...
おすすめ情報