1
1

More than 5 years have passed since last update.

readdir(3)を使ってみる

Last updated at Posted at 2014-05-31

はじめに

「lsを読まずにプログラマを名乗るな!」を少し読みました。読んでみて標準ライブラリ関数に興味を持ちました。今回は標準ライブラリ関数のreaddir(3)を使ってみたことを少し書きたいと思います。

実装

main.c
#include <dirent.h>
#include <stdlib.h> // NULLを利用するために
#include <stdio.h> // printfを利用するために

int main()
{
  DIR *dirp;
  struct dirent *dp;

  dirp = opendir(".");

  if (dirp == NULL)
    return -1;

  while (1) {
    dp = readdir(dirp);

    if (dp == NULL)
      break;

    // printf("%d\n", dp->d_namlen);
    printf("%s\n", dp->d_name);
  }

  (void)closedir(dirp);
  return 0;
}
// vim: set sw=2 sts=2 et :

ヘッダファイルはどこにあるか?

次のようなmanコマンドでヘッダファイルを調べることができます。

$ man 3 readdir

セクション番号として3を指定することで、標準ライブラリを調べることができます。

まとめ

C言語でglobに既に同じような記事があります。こちらも併せて読むことで理解が深まると思います。

ファイルを読み込む実装は書籍で見かけることがありますが、カレントディレクトリにあるファイル名、ディレクトリ名を取得する実装は目新しく面白いと思いました。

スクリプト言語などではファイル名、ディレクトリ名を取得するようなオブジェクトが用意されていることが多いですが、そういうオブジェクトは標準ライブラリを利用しているのだろうか?という疑問が少し芽生えました。

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1