目录
用到的函数及特点
opendir
头文件:
#include <sys/types.h>
#include <dirent.h>
DIR *opendir(const char *name);
功能:打开指定目录
参数:目录路径
返回值:
成功返回目录流
失败返回NULL
readdir
头文件
#include <dirent.h>
struct dirent *readdir(DIR *dirp);
功能:读读取目录
参数:目录流
返回值:
返回值为结构体,该结构体成员为描述该目录下的文件信息
读取的文件
失败或者读取到文件末尾都会返回NULL
readdir牵扯到了struct dirent结构体,我们来看一下这个结构体
struct dirent
struct dirent {
ino_t d_ino; /* 索引节点号*/
off_t d_off; /*在目录文件中的偏移*/
unsigned short d_reclen; /* 文件名长度*/
unsigned char d_type; /* 文件类型 */
char d_name[256]; /* 文件名 */
};
closedir
头文件
#include <sys/types.h>
#include <dirent.h>、
int closedir(DIR *dirp);
功能:关闭打开的目录
参数:目录流
返回值:
成功0
失败-1
代码实现功能
代码
//目录函数实现 ls功能
#include <sys/types.h>
#include <dirent.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char const *argv[])
{
DIR *fp;
struct dirent *s;
fp = opendir(".");
if (fp == NULL)
{
perror("error");
return -1;
}
while ((s = readdir(fp)) != NULL)
{
if (strcmp(".", s->d_name) != 0 && strcmp("..", s->d_name) != 0)
{
printf("%s ", s->d_name);
}
}
closedir(fp);
return 0;
}
代码的结果验证