首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

当前目录上查找文件名并返回函数

2012-09-24 
当前目录下查找文件名并返回函数。linux有没有函数库函数 可以实现在指定的目录下,查找规定类型的文件,并把

当前目录下查找文件名并返回函数。
linux有没有函数库函数 可以实现在指定的目录下,查找规定类型的文件,并把文件该文件名及后缀名返回.

相当于 find -name "*.ini" 然后就返回了 config.ini



[解决办法]
那么就调用这个命令,输出重定向到文件,然后读文件输出就是了。
[解决办法]

C/C++ code
#include <stdio.h>#include <stdlib.h>#include <sys/dir.h>#include <sys/stat.h>#include <string.h>//判断是否为目录int IS_DIR(const char* path){         struct stat st;         lstat(path, &st);         return S_ISDIR(st.st_mode);}//遍历文件夹de递归函数void List_Files_Core(const char *path, int recursive){         DIR *pdir;         struct dirent *pdirent;         char temp[256];         pdir = opendir(path);         if(pdir)         {                 while(pdirent = readdir(pdir))                 {                           //跳过"."和".."                           if(strcmp(pdirent->d_name, ".") == 0                                     || strcmp(pdirent->d_name, "..") == 0)                                   continue;                           sprintf(temp, "%s/%s", path, pdirent->d_name);                           printf("%s\n", temp);                           //当temp为目录并且recursive为1的时候递归处理子目录                           if(IS_DIR(temp) && recursive)                           {                                   List_Files_Core(temp, recursive);                           }                 }          }         else         {                  printf("opendir error:%s\n", path);          }          closedir(pdir);}//遍历文件夹的驱动函数void List_Files(const char *path, int recursive){          int len;          char temp[256];          //去掉末尾的'/'          len = strlen(path);          strcpy(temp, path);          if(temp[len - 1] == '/') temp[len -1] = '\0';           if(IS_DIR(temp))          {                   //处理目录                   List_Files_Core(temp, recursive);          }         else   //输出文件         {                  printf("%s\n", path);         }}int main(int argc, char** argv){          if(argc != 2)         {                     printf("Usage: ./program absolutePath\n");                     exit(0);         }         List_Files(argv[1], 1);         return 0;}
[解决办法]
要么调用find,要么写find的代码。

热点排行