读书人

算法有关问题

发布时间: 2012-02-27 10:00:22 作者: rapoo

求一个算法问题
我有个文件名列表,里面是需要检查的某些文件,也就是要看这些文件是否在指定的目录下面存在。而存在指定的这个目录里面的文件是未知的。

条件:
char * fileList[6]={ "a.txt ", "b.sh ", "c.out ", "d.c ", "e.h ", "f.bak "}
char targetDir[50]= "d:\test "
寻求结果:
char * fileNotExist[6]= ?

我想知道,再targetDir这个目录下面,不存在fileList中列出的文件



[解决办法]
先在你所需要寻找的文件目录下,查找到所有的文件名。然后把文件名用数组保存起来,跟你自己的数组比较。

structdirent*dir_entry;

while ( ( dir_entry=readdir(directory) ) ) {
if ( (!strcmp(dir_entry-> d_name, ". ") ) ||( !strcmp(dir_entry-> d_name, ".. ") ) ) {
} else {
所有文件名。
}
}


[解决办法]
方法1: 遍历目录,查找目标文件是否存在

DEV C++, 利用链表实现目录内所有文件列表显示
//遍历 argv[1] 参数指定的目录

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

读书人网 >C语言

热点推荐