C言語関係掲示板

過去ログ

No.186.ディレクトリの存在確認


No.1190

ディレクトリの存在確認
投稿者---ゲンヤン(2002/03/06 17:36:40)


特定のディレクトリ内に指定したディレクトリが存在するかどうかを
確認するにはどのような処理をすれば良いのでしょうか?

お分かりになる方はぜひ教えてください。
お願い致します。

No.1197

Re:ディレクトリの存在確認
投稿者---kikk(2002/03/06 23:04:19)


ども。


>特定のディレクトリ内に指定したディレクトリが存在するかどうかを
>確認するにはどのような処理をすれば良いのでしょうか?

(たぶんio.hにある)非標準な関数access()をつかってみてはどうでしょ?
この関数は文字通りファイルのアクセス権を調べるものですが、存在確認
にもつかえます。


では。

No.1198

Re:ディレクトリの存在確認
投稿者---かずま(2002/03/06 23:34:50)


OS は何ですか。Unix だったら、

#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <unistd.h>
#include <stdio.h>

int main(int argc, char **argv)
{
  DIR *dp;
  struct dirent *p;
  struct stat buf;

  if (argc != 3)
    return printf("usage: %s path dir\n", argv[0]), 1;

  if (chdir(argv[1]) < 0)
    return printf("can't get to directory %s\n", argv[1]), 2;

  dp = opendir(".");
  if (dp == NULL)
    return printf("can't open directory %s\n", argv[1]), 3;

  while (p = readdir(dp)) {
    if (strcmp(p->d_name, argv[2]) == 0) {
      if (stat(argv[2], &buf) < 0)
        return printf("stat failed\n"), 4;
      if ((buf.st_mode & S_IFMT) == S_IFDIR)
        return printf("found the directory %s\n", argv[2]), 0;
      return printf("%s is not a directory\n", argv[2]), 5;
    }
  }
  closedir(dp);
  printf("%s not found\n", argv[2]);
  return 6;
}


戻る


「初心者のためのポイント学習C言語」 Last modified:2002.05.14
Copyright(c) 2000-2002 TOMOJI All Rights Reserved