• ベストアンサー

ファイル名の取得について

me_no_carの回答

  • ベストアンサー
  • me_no_car
  • ベストアンサー率24% (22/90)
回答No.3

C言語では動的にメモリを確保する必要があります。 動的メモリ確保で検索するといろいろでてくる と思いますよ。 ファイル名を取得し配列に格納する サンプルソースのせておきます。 ちなみにディレクトリ名の取得はUNIX-Cです。 補足説明としては2回目以降はreallocでメモリ再確保 するのがポイントです。 連続したアドレスでメモリ確保してくるので別途アドレス を確保しておく必要もないし配列と同様に扱えます。 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <dirent.h> ---------------------------- int cnt=0; char DirPath[256]; char **filename; DIR *dir; struct dirent *dp; strcpy(DirPath,"ここに検索対象ディレクトリ"); dir = opendir(DirPath); while( (dp = readdir(dir)) != NULL ){ if( cnt == 0 ){ filename = (char **)malloc(sizeof(cnt + 1 )); } else{ filename = (char **)realloc(filename,sizeof(cnt + 1 )); } *(filename + cnt ) = (char *)malloc(sizeof(strlen(dp->d_name) + 1 )); *(filename + cnt) = dp->d_name; cnt++; } closedir(dir); -------------------------------------------

mk1234
質問者

お礼

回答ありがとうございます。 あとで知人から聞いたのですが、ファイル名の取得ぐらいなら2万件あってもたいしたことないので、mallocを使うより最大ファイル数を設定するほうが一般的らしいのですがそうなのでしょうか? (ケース バイ ケースなのでしょうが・・・)

関連するQ&A

  • フォルダ内のファイル名を取得する

    windows 7なのですが、フォルダ内にあるファイル名をテキストとしてすべて一括で取得する方法はないでしょうか? また、フォルダの中にさらに複数のフォルダがあっても、上の階層のフォルダからすべてファイル名を取得する方法はないでしょうか? よろしくお願いいたします。

  • C# ファイルサイズの取得(ファイル名ではない)

    ファイルサイズ取得で検索するとファイル名のサイズを取得する方法ばかりで実際に存在しているファイルの大きさと合っていないのですが、どのようにコードを書けば良いでしょうか?

  • ファイル名の始めに“.”をつけてしまい消えた

    AndroidのSDマネージャーで隠しフォルダを作るときに、フォルダ名ではなく、ファイル名の最初に“.”を付けてしまい、すべてのファイルを表示にしても見れなくなりました。 消えてしまったのでしょうか?

  • フォルダーの中のファイル名を取り出す

    フォルダーの中のファイル名を取り出し配列に格納する方法はありますか?

  • フォルダ内にあるファイル名を取得したい

    cを利用して、指定したフォルダの中にある全てのファイルの名前を取得するプログラムを作りたいのですが、適した関数がわかりません。 指定するフォルダはあらかじめ決めうちで、その中には.txtのファイルのみを格納します。 どなたか教えてください。できれば自分で作りたいのでヒントをください。お願いします。 VisualC++.netを使っています。OSはXPです。

  • delphi5でのディレクトリ内ファイル名の取得

    こんにちは。質問があります。 delphiのアプリケーションであるディレクトリのフォルダ内のファイルを 別のディレクトリのフォルダ内に名前を変えてコピーしようと考えています。 基本的にコピー元のディレクトリ名はわかりません。 コピー先のディレクトリは存在しなければ、名前を指定して作成し、その中に名前を変更したファイルを格納する流れです (わかりづらいかも・・・) フォルダが存在しなければ作成したり、ファイル名を変更してコピーする のはわかったのですが、コピー元のディレクトリ内のファイル(もしくはディレクトリ)名を取得することがわかりません。 全てソースの中でプログラムしたいと考えています。(VCLは使用しない) こんなんでもわかっちゃったりする方がいらっしゃいましたら、 どうか愛の手を・・・

  • フォルダの全ファイル名を自動的に取り込むには

    ビジュアルベーシク(VB5)でドライブ、フォルダ、ファイルの各アイコンをフォームに配置して動作させると、手動でファイル名を取得できますが、フォルダを指定したらその中のファイル名全てを、自動的に文字配列変数に取り込むにはどうしたらよいでしょうか?よろしくお願いします。

  • フォルダに入っているファイルの取得

    フォルダ/abcに入っている、JPGの画像のファイルを配列@defに取得するコードをお願いします。

    • ベストアンサー
    • Perl
  • ファイルの拡張子を取得したい

    あるフォルダにファイルが存在しています。ファイルが存在していることは確認できています。 ファイル名まではわかっているのですが、拡張子がわかりません。 実在するファイルの拡張子を取得する方法を教えてください。

    • 締切済み
    • PHP
  • 同じファイル名なのに同じと判定しない

    重複データを削除するために、有名どころであるFileManyというフリーソフトを使っているのですが、同じファイル名なのに同じと判定しないことがあります。 エクスプローラーや別の同様なアプリでは同じ名前と判定します。 人の目で見ても当然同じファイル名です。 フォルダ階層も深くないですし、ファイル数も1個で比較してもダメです。 プログラムのコードは知りませんが、普通に考えて、パスからファイル名を抜き出し、if文で比較しているだけだと想像します。 ほぼ正しく動くのに、例外的に動かないことが(バグ)あると困りますよね。 なぜこんなことが起きてしまうのでしょうか?