目录操作: 列出指定目录下的文件 获取当前目录

1、获取目录

        C 获取当前目录的实现:

1、getcwd()

(1)函数使用

 C语言getcwd()函数:取得当前的工作目录 头文。
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

2、使用示例

#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);
} 

3、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 核心内存不足。 

4、使用示例

 
#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; 
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ma_Hong_Kai

微信 2936729162

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值