【发布时间】:2013-04-02 08:15:08
【问题描述】:
我在当前目录中搜索目录,如果我跨越一个目录,我再次进入并搜索目录和文件,但我找不到问题。我总是得到相同的结果和一些特定的目录。在代码中,我在数组中获取目录名称并打印它们。结果如下所示;
direc Num (except parent and curr) : 6
/home/sabri/Desktop/Test/Untitled Folder 3
/home/sabri/Desktop/Test/Untitled Folder 3
/home/sabri/Desktop/Test/Untitled Folder 3
/home/sabri/Desktop/Test/Untitled Folder 3
/home/sabri/Desktop/Test
/home/sabri/Desktop/Test/Untitled Folder 4
/home/sabri/Desktop/Test/Untitled Folder 4
/home/sabri/Desktop/Test/Untitled Folder 4
但我的目录是 ;
Untitled Folder 1
Untitled Folder 2
Untitled Folder 3
Untitled Folder 4
Untitled Folder 5
int listFilesIndir(char *currDir)
{
struct dirent *direntp;
char newDir[20][250];
DIR *dirp;
int x ,y =0,i=0 ;
if ((dirp = opendir(currDir)) == NULL)
{
perror ("Failed to open directory");
return 1;
}
while ((direntp = readdir(dirp)) != NULL)
{
printf("%s\n", direntp->d_name);
if(direntp->d_type == DT_DIR)
{
y++;
chdir(direntp->d_name);
getcwd(newDir[i],250);
listNewDir(direntp->d_name);
i++;
}
}
printf("direc Num (except parent and current) : %d\n",y-2 );
for ( i = 0; i < 10; ++i)
{
printf("%s\n", newDir[i]);
}
while ((closedir(dirp) == -1) && (errno == EINTR)) ;
return 0;
}
int listNewDir(char *currDir)
{
struct dirent *direntp;
DIR *dirp;
if ((dirp = opendir(currDir)) == NULL)
{
perror ("Failed to open directory");
return 1;
}
while ((direntp = readdir(dirp)) != NULL)
printf("%s\n", direntp->d_name);
while ((closedir(dirp) == -1) && (errno == EINTR)) ;
return 0;
}
【问题讨论】:
-
您可能会发现 [ftw][1](文件树遍历)在这里有帮助! [1]:linux.die.net/man/3/ftw
-
@joe:添加评论时,点击“帮助”链接查看如何在评论中嵌入链接——它与问答编辑器中使用的 Markdown 语法不同。
-
@Clifford Ta,我想知道我搞砸了什么! :-)
-
我不确定这个问题的标签是否相关或有用。即使这是针对例如嵌入式系统,问题本质上是一般性的,并且不应该针对嵌入式空间 - 这只会不必要地缩小您的受众范围。我建议只使用“C”和“Linux”或者可能是“POSIX”,因为这似乎是正在使用的 API。
标签: c embedded system systems-programming