获取目录信息
1.DIR *opendir(const char *name)
opendir用来打开参数name指定的目录,并返回DIR*形态的目录流
返回值:
成功:返回DIR*形态的目录流
失败:NULL
2.struct dirent *readdir(DIR *dir)
用来从参数dir所指向的目录中读取出目录项信息,返回一个struct dirent结构的指针
struct dirent{
longd_ino; //目录i节点编号,不用理会
off_td_off; //目录文件开头至目录进入点的位移
unsignedshort d_reclen; //d_name的长度
chard_name[NAME_MAX+1]; //以NULL结尾的文件名
}
函数执行成功返回该目录下一个文件的信息(存储在dirent结构体中),如果调用opendir打开某个目录之后,第一次调用该函数,则返回的是该目录下第一个文件的信息,第二次调用该函数返回该目录下第二个文件的信息,以此类推。
如果该目录下已经没有文件信息可供读取,则返回NULL。调用该函数如果有错误发生或读取到目录文件尾,则返回NULL。
3.int closedir(DIR *dir)
用来关闭参数dir指向的目录。
返回值:
成功:0
错误:-1
代码:获取目录信息
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
int main(int argc, char **argv)
{
if(argc != 2)
{
printf("Usage:\n");
printf("<dir><dirpath> \n");
return0;
}
DIR*dir;
dir= opendir(argv[1]);
if(dir == NULL)
{
printf("Error:line = %d \n", __LINE__);
return0;
}
structdirent *dirmsg;
do
{
dirmsg= readdir(dir);
if(dirmsg)
{
printf("readdir name = %s \n", dirmsg->d_name);
}
}while (dirmsg != NULL);
closedir(dir);
return0;
}