C言語で、カレントディレクトリのファイル一覧を表示する、コマンドってありますか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答12件)

id:jj0dfk No.1

回答回数5ベストアンサー獲得回数0

ポイント13pt

こちらの内容を参考になさってはいかがでしょうか。

応用することで表示も可能かと思います。

上の回答ページの元のページ(トップページ)は、こちらです。

id:asaitaasatte

ありがとうございます。

できればもっと簡単にできるやり方をお願いします。

2005/06/07 14:21:01
id:ohmix1 No.2

回答回数235ベストアンサー獲得回数14

ポイント13pt

http://www.ncad.co.jp/~komata/c-kouza14.htm

�R���s���[�^�[�FC�����u���F�f�B���N�g�����e�̓ǂݏo��

言語だけでなく、環境も書いて欲しいな。。。


で、UNIXなら標準関数で取得できます。

opendir

readdir

closedir

http://home.a03.itscom.net/tsuzu/programing/tips19.htm

#019 ディレクトリエントリの取得(Win32 API編)

Windowsにはopendir系の関数がありません。

同等の機能は、以下のAPIで実現可能です。

FindFirstFile

FindNextFile

FindClose


http://plaza.harmonix.ne.jp/~fakira/turedure/cprog_01.htm

�v���O���~���O����

またWindowsAPIではなく、VCランタイムにも同様の関数があります。

_findfirst

_findnext

_findclose


「01/04/26(木)」あたりを参照。


http://www.ne.jp/asahi/yamashita/programming/tips/CFileFind.html

フォルダ内のファイルを検索する

もし、MFCを使ってるのならクラスを使っても書けます。

id:asaitaasatte

すみませんでした。

使っているOSはLINUXで、コンパイラはgccです。

2005/06/09 08:11:20
id:typista No.3

回答回数359ベストアンサー獲得回数7

ポイント13pt

readdir - ディレクトリ情報の読出し

struct dirent *readdir(DIR *dp);

で取得可能です。

サンプルも参照してください。

id:asaitaasatte

ありがとうございます。

2005/06/09 08:16:12
id:aef444 No.4

回答回数270ベストアンサー獲得回数0

ポイント13pt

http://www.hatena.ne.jp/1118121349

人力検索はてな - C言語で、カレントディレクトリのファイル一覧を表示する、コマンドってありますか?

URLはダミーです。


標準ライブラリの system() 関数はいかがですか。

(system(”ls”)とか)

こういうのでいいのかなあ・・・

id:asaitaasatte

ためしてみます。

2005/06/09 08:16:32
id:aki73ix No.5

回答回数5224ベストアンサー獲得回数27

ポイント13pt

サンプルを作ってみました


#include ”stdafx.h”

#include ”windows.h”

#include ”stdio.h”


int main(int argc, char* argv[])

{

char dir[512]/*カレントディレクトリ*/,wc[512]/*ワイルドカード付文字列*/;

HANDLE hSearch; //見つかったファイルのハンドル

WIN32_FIND_DATA fd; //検索データ

::GetCurrentDirectory(512,dir); //カレントディレクトリ取得

wsprintf(wc,”%s¥¥*.*”,dir); //ワイルドカード作成

hSearch=::FindFirstFile(wc,&fd); //最初の検索で使用する関数

if(hSearch!=INVALID_HANDLE_VALUE){ //ファイルが見つかったら次の処理

do{

if(strcmp(fd.cFileName,”.”)&&strcmp(fd.cFileName,”..”)){ //カレントフォルダ、親フォルダは無視

if(fd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY ){

printf(”%s¥¥¥n”,fd.cFileName); //ファイルがディレクトリなら表示に”¥”をつける

}

else{

printf(”%s¥n”,fd.cFileName); //ファイルならそのまま表示

}

}

}

while(::FindNextFile(hSearch,&fd)); //ファイルがなくなるまで継続

}

FindClose(hSearch); //ハンドルを閉じる

return 0;

}

id:asaitaasatte

サンプルまで作っていただいて、すみません。

ありがとうございます。

2005/06/09 08:17:23
id:tandtea No.6

回答回数15ベストアンサー獲得回数0

ポイント13pt

http://www.hatena.ne.jp/awindow?qid=ホニャララ:detail]

URLはダミー 現在回答5閲覧1

一口にC言語といっても、OS等の環境によって変わってくると思います。

質問分の中に「コマンド」という言葉が出てきたのが非常に気になりました。

質問者の方の習熟度合いがつかめません...

id:asaitaasatte

ファイルの扱いを習い始めたレベルです。

かなり習熟度は低いです。

2005/06/09 08:18:39
id:tsupo No.7

回答回数25ベストアンサー獲得回数1

ポイント13pt

http://www.microsoft.com/japan/msdn/library/ja/vclib/html/_crt__...

_findfirst、_findfirst64、_findfirsti64、_wfindfirst、_wfindfirst64、_wfindfirsti64

Windows なら _findfirst() + _findnext() または FindFirst() + FindNext() を使って、指定したディレクトリ内のファイルのリストを取得することができます。

UNIX 系の OS の場合は、opendir() + readdir() で目的のディレクトリ内のファイルのリストを取得することができます。

id:asaitaasatte

ありがとうございます。

2005/06/09 08:18:59
id:cno No.8

回答回数124ベストアンサー獲得回数12

ポイント13pt

URLはダミーです。

C言語の関数にそういった機能を持つものはないと思います。方法としては

system(”ls > hoge.txt”);(UNIX)

system(”dir > hoge.txt”);(Windows)

などとして一覧をテキストファイルに書き出してから、それを読み込むというのはどうでしょうか?

id:asaitaasatte

ためしてみます。

2005/06/09 08:19:32
id:goldman No.9

回答回数86ベストアンサー獲得回数0

ポイント13pt

C言語であるならば・・・

#include <stdio.h>

#include <dirent.h>

void ReadDir (char *);

int main (int argc,char *argv[]) {

ReadDir(”C:¥¥”);

return(0);

}

void ReadDir (char *dir_name) {

DIR *dir_ptr;

int ret_code;

char tmp_str[8+1];

struct dirent *ent;

char file_path[PAT_LEN];


if ((dir_ptr = opendir(dir_name)) == (DIR *)NULL) {

return;

}

for (;(ent = readdir(dir_ptr)) != (struct dirent *)NULL ;) {

printf(”%s¥n”,ent->d_name);

}

closedir(dir_ptr);

return;

}

id:asaitaasatte

ありがとうございます。

2005/06/09 08:20:12
id:Lucrezia No.10

回答回数26ベストアンサー獲得回数0

ポイント13pt

お初に御目文字いたします。

コマンド…って、APIの事ですかしら?

opendirからreaddir、closedirの一連のAPIを使えばなんとでもなると思うんですけれどもいかがかしら?

一応念のため。これはUNIXでのお話よ。Windowsは存じ上げませんわ。たぶんWIN32APIにそういった類のものはあるはずなんですけれども。

id:asaitaasatte

ありがとうございます。

2005/06/09 08:20:49
id:iww No.11

回答回数101ベストアンサー獲得回数10

ポイント13pt

提示された仕様を満たすなら

#include <stdlib.h>

system(”ls”);

で良いと思います。

id:asaitaasatte

ありがとうございます。

2005/06/09 08:21:24
id:ruse No.12

回答回数7ベストアンサー獲得回数0

ポイント13pt

http://www.d8.dion.ne.jp/~dkubota/program/c_standard.html

ANSI C���� ���C�u�����֐�

標準関数ではそのような関数は存在しないです。


windowsの場合ならsystem関数にて「dir」コマンドを発行してリダイレク(例:system(”dir > a.txt”);)して一旦ファイルに結果出力後、プログラムでファイルをopen、readして「<DIR>」の付いていない名前をprintfで表示すればどうでしょうか?

id:asaitaasatte

皆さんのおかげでなんとかできそうです。

ありがとうございました。

2005/06/09 08:22:10

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません