【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※返信付き投稿の削除は禁止!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら


本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.21468

ディレクトリ内のファイル全表示方法
投稿者---PRA(2005/06/16 18:49:26)


ディレクトリ内のファイル全表示方法で悩んでおります。
findfirstとfindnext関数を使用するまでは分かったのですが、
findfirstとfindnextをどう組み合わせて検索するのかが分かりません。
ただ単純にディレクトリ内のファイル名を表示するプログラムが作りたいのですが・・・。


struct _finddata_t fd;
findfirst("ファイルパス*.*"、 &fd);
ここで取得できた場合fd.nameにファイル名が入ること

でこのあとのfindnextの使い合わせ方が分かりません・・・。
どなたかご伝授くださいませ


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:ディレクトリ内のファイル全表示方法 21469 Blue 2005/06/16 19:12:10
<子記事> Re:ディレクトリ内のファイル全表示方法 21470 shu 2005/06/16 22:24:07


No.21469

Re:ディレクトリ内のファイル全表示方法
投稿者---Blue(2005/06/16 19:12:10)


私が以前回答したものですが
過去ログNo.19941



この投稿にコメントする

削除パスワード

No.21470

Re:ディレクトリ内のファイル全表示方法
投稿者---shu(2005/06/16 22:24:07)


#include <stdio.h>
#include <dir.h>

int main( void )
{
    struct ffblk Fd;
    
    if (findfirst( "*", &Fd, FA_NORMAL ) == EOF)
        return 1;
    
    while (!findnext( &Fd ))
        puts( Fd.ff_name );
        
    findclose( &Fd );
    
    return 0;
}


一応、うちの環境では、上のコードで動きました。

ディレクトリ指定や、ワイルドカード、ファイルの種類等は、お好きにカスタマイズしてください。


この投稿にコメントする

削除パスワード

No.21471

Re:ディレクトリ内のファイル全表示方法
投稿者---かずま(2005/06/17 10:27:40)


>   while (!findnext( &Fd ))
>       puts( Fd.ff_name );
        
次のようにしないと、最初のファイルが表示されません。

    do {
        puts(Fd.ff_name);
    } while (!findnext(&Fd));
    

> 一応、うちの環境では、上のコードで動きました。

「うちの環境」では情報不足です。
Borland C++ Compiler とはっきり書きましょう。

Borland C++ Compiler では、他に次の 3通りの方法があります。

--------------------------------------------------------------
// C ランタイムライブラリの _findfirst() を使う。

#include <stdio.h>
#include <io.h>

int main(void)
{
    struct _finddata_t fd;  long handle;

    handle = _findfirst("*", &fd);
    if (handle == -1) return 1;
    do {
        puts(fd.name);
    } while (!_findnext(handle, &fd));
    _findclose(handle);
    return 0;
}

--------------------------------------------------------------
// Win32 API の FindFirstFile() を使う。

#include <stdio.h>
#include <windows.h>

int main(void)
{
    WIN32_FIND_DATA fd;
    HANDLE handle = FindFirstFile("*", &fd);
    if (handle == INVALID_HANDLE_VALUE) return 1;
    do {
        puts(fd.cFileName);
    } while (FindNextFile(handle, &fd));
    FindClose(handle);
    return 0;
}

--------------------------------------------------------------
// Unix の opendir() を使う。

#include <stdio.h>
#include <dirent.h>

int main(void)
{
    struct dirent *ep;

    DIR *dp = opendir(".");
    if (dp == NULL) return 1;
    while (ep = readdir(dp))
        puts(ep->d_name);
    closedir(dp);
    return 0;
}



この投稿にコメントする

削除パスワード

No.21472

Re:ディレクトリ内のファイル全表示方法
投稿者---shu(2005/06/17 13:01:27)


正しい情報ありがとうございます。
間違っている部分が良くわかりました。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧