【发布时间】:2011-12-17 04:42:23
【问题描述】:
如何编写一个函数来返回一个目录中的所有文件名,包括子目录中的文件。 到目前为止,我有这样的东西,但它不能正常工作,我尝试调用这个函数并打印出每个元素,它只打印第一个元素。
谁能告诉我我做错了什么或编写此函数的其他方法?
char **allFiles(char *dir, OPTIONS opts) {
char **allfiles = malloc(sizeof(char **));
struct dirent *dp;
while((dp = readdir(dirp)) != NULL) {
if (strcmp(dp->d_name, ".") == 0 || strcmp(dp->d_name, "..") == 0)
continue;
if (dp->d_type == DT_DIR)
allfiles = allFiles(strcat(strcat(dir, "/"), dp->d_name));
if (dp->d_type != DT_DIR)
*allfiles = strdup(strcat(strcat(strdup(dir), "/"), dp->d_name));
++allfiles;
}
closedir(dirp);
return allfiles;
}
【问题讨论】:
-
又是标准问题——“不能正常工作”是什么意思?
-
也许使用 ftw() 或 nftw() 调用更容易完成这项任务。