トップ «前の日記(2010/10/26(Tue)) 最新 次の日記(2010/11/01(Mon))»
【ソース+水=麦茶色の何か】

半期 四半期 全カテゴリ

今日の一言


2010/10/29(Fri) この日記にリンク元を見る機能があったことに今気づいた [長年日記] 14:00現在 18℃

_ [C++][Debian][FC][Ubuntu][Linux][研究関係][雑記] C言語(C++)でディレクトリ内に、ある名前を持ったファイルが存在するかを確認する(stat編)

前(http://robotics.naist.jp/~akihiro-i/dialy/?date=20100606#p03)は「opendir」を使ってファイルの有無を確認していたが、「stat」を使った方が簡単に出来るようだ。

こんな感じで書けばOK?

 #include <sys/types.h>
 #include <sys/stat.h>
 #include <time.h>
 #include <stdio.h>
 #include <stdlib.h>

 int check_exist(char* target)
 {
   struct stat sb;
   if (stat(target, &sb) == -1)
     return 1;
   else
     return 0;
 }

 int main(int argc, char **argv)
 {
   char* target = argv[1];
   if (argc != 2) {
     fprintf(stderr, "Usage: %s <targetname>\n", argv[0]);
     exit(EXIT_FAILURE);
   }
   if(check_exist(target) != 0)
   {
     perror("stat");
     exit(EXIT_SUCCESS);
   }
   else
   {
     printf("\"%s\" is found\n",target);
     exit(EXIT_SUCCESS);
   }
 }

statの詳しい使い方は、ここ(http://archive.linux.or.jp/JM/html/LDP_man-pages/man2/stat.2.html)を見れば分かるはず。