问题:如何提取一个文件夹下的所有文件(的名字)
解决:系统提供了DIR、dirent 变量,
opendir: 函数原型:direct * opendir ( DIR* dir );作用:打开一个目录
closedir: 关闭一个目录,防止内存泄露
readdir: 每次返回目录下的一个名字
这里使用一个链表记录文字名。当然也可以每次读取一个文件名
代码:
#include <stdio.h>
#include <dirent.h>
/*#include <alloc.h> */
#include <string.h>
void main(int argc,char *argv[])
{
DIR *directory_pointer;
struct dirent *entry;
struct FileList
{
char filename[64];
struct FileList *next;
}start,*node;
if (argc!=2)
{
printf( "Must specify a directory\n ");
exit(1);
}
if ((directory_pointer=opendir(argv[1]))==NULL)
printf( "Error opening %s\n ",argv[1]);
else
{
start.next=NULL;
node=&start;
while ((entry=readdir(directory_pointer))!=NULL)
{
node-> next=(struct FileList *)malloc(sizeof(struct FileList));
node=node-> next;
strcpy(node-> filename,entry-> d_name);
node-> next=NULL;
}
closedir(directory_pointer);
node=start.next;
while(node)
{
printf( "%s\n ",node-> filename);
node=node-> next;
}
}
}
当然,这里malloc 没有释放内存,注意要free一下。