如何使用c语言从特定目录中查找扩展名为.done的文件

时间:2015-08-24 10:00:54

标签: c

    int main(int argc, char **argv)
{
   char *dirFilename = "/home/sv5071184/sample";
DIR *directory = NULL;
directory = opendir (dirFilename);

          if(directory == NULL)
           return -1;
           struct dirent *dirp;
             while ((dirp = readdir (directory)) != NULL) {

                if(  ! (strcmp (dirp->d_name ,".done") == 0)  )
                 {
                    printf ("%s\n", dirp->d_name);
                 }
                }
    if(closedir(directory) < 0)
        return -1;
}

注意:我已更新代码。使用此代码可以找到目录中的所有文件,而我只需要找到.done文件

2 个答案:

答案 0 :(得分:0)

查找以特定字符串(扩展名)结尾的文件与文件名很常见。

无论好坏,在POSIX标准下,文件名不分为名称和扩展名,遗憾的是C字符串库没有像Java或C#中的endsWith那样的函数。

我认为您应该编写一个简单的实用函数ends_with(char*, char*)来检查一个字符串是否以另一个字符串结尾并使用它来检查ends_with(ent->d_name, ".done")

希望这会有所帮助:)

答案 1 :(得分:0)

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <dirent.h>

int main(int argc, char **argv)
{
    char *dirFilename = "/home/sv5071184/sample";
    DIR *directory = NULL;
    directory = opendir (dirFilename);


    if(directory == NULL)
        return -1;
    struct dirent *dirp;
    while ((dirp = readdir (directory)) != NULL) {

        if ( strstr(dirp->d_name , ".done" ))
        {
            printf( "found a .done file: %s\n", dirp->d_name );
        }
    }
    if(closedir(directory) < 0)
        return -1;

}

我使用过这种方式,它正在运作..谢谢大家