目录操作: 列出指定目录下的文件 获取当前目录_马鸿凯_新浪博客

linux C 获取当前目录的实现:
 C语言getcwd()函数:取得当前的工作目录 头文件:
#include 定义函数:
char * getcwd(char * buf, size_t size);
 函数说明:getcwd()会将当前的工作目录绝对路径复制到参数buf 所指的内存空间,参数size 为buf 的空间大小。
 注:
 1、在调用此函数时,buf 所指的内存空间要足够大。若工作目录绝对路径的字符串长度超过参数size 大小,则       返回NULL,errno 的值则为ERANGE。
 2、倘若参数buf 为NULL,getcwd()会依参数size 的大小自动配置内存(使用malloc()),如果参数size 也为0,          则getcwd()会依工作目录绝对路径的字符串程度来决定所配置的内存大小,进程可以在使用完次字符串后利        用free()来释放此空间。
     返回值:执行成功则将结果复制到参数buf 所指的内存空间, 或是返回自动配置的字符串指针. 失败返回NULL,错误代码存于errno

. //获取当前目录 
#include ”stdlib.h“
 #include “stdio.h”
 #include ”string.h“
 #include “unistd.h”
 //包含了Linux C 中的函数getcwd() 
#define FILEPATH_MAX (80)
 int main() 
char *file_path_getcwd; 
file_path_getcwd=(char *)malloc(FILEPATH_MAX); 
getcwd(file_path_getcwd,FILEPATH_MAX);
 printf("%s",file_path_getcwd);
 } 

C语言opendir()函数:打开目录函数 
相关函数:open, readdir, closedir, rewinddir, seekdir, telldir, scandir 

 定义函数:DIR * opendir(const char * name);
 函数说明:opendir()用来打开参数name 指定的目录, 并返回DIR*形态的目录流, 和open()类似, 接下来对目录                   的读取和搜索都要使用此返回值. 返回值:成功则返回DIR* 型态的目录流, 打开失败则返回NULL. 错误代码: 
1、EACCESS 权限不足。 
2、EMFILE 已达到进程可同时打开的文件数上限。 
3、ENFILE 已达到系统可同时打开的文件数上限。
 4、ENOTDIR 参数name 非真正的目录。 
5、ENOENT 参数name 指定的目录不存在, 或是参数name 为一空字符串。 
6、ENOMEM 核心内存不足。 


 #include “stdio.h”
 #include "dirent.h" 
#include "string.h"
 void List(char *path) 
struct dirent *ent = NULL; DIR *pDir;
 if((pDir = opendir(path)) != NULL) 
while(NULL != (ent = readdir(pDir))) 
if(ent->d_type == 8) // d_type:8-文件,4-目录
 printf("File:\t%s\n", ent->d_name);
 else if(ent->d_name[0] != '.')
 { 
printf("\n[Dir]:\t%s\n", ent->d_name);
 List(ent->d_name); // 递归遍历子目录
 printf("返回[%s]\n\n", ent->d_name);
 } 
closedir(pDir); 
} else 
printf("Open Dir-[%s] failed.\n", path);
 } 
int main() { 
char path[] = "/home/zcm/program/test";
 List(path);
 return 0; 
}

版权声明:本文为Ma_Hong_Kai原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。