【发布时间】:2015-06-06 17:47:18
【问题描述】:
我一直在尝试学习如何使用函数与系统上的路径进行交互,但我想我一开始就卡住了。
我特别搜索了 web 和 stackoverflow,但找不到像我想要做的基本实现。还有一些其他问题与我的类似,但我发现它们不像我的那样简单且对初学者友好。
这里是代码,这个代码只是打印给定路径中的文件,“.”和“..”
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <sys/stat.h>
#include <string.h>
void listdir(DIR *c);
int main()
{
DIR* root_d;
root_d = opendir("/home/foo/Desktop/testx");
listdir(root_d);
}
void listdir(DIR *c){
DIR* current = c;
struct dirent *curr_ent;
if((curr_ent =readdir(current)) != NULL && curr_ent->d_type == DT_DIR){
listdir(current);
}
printf("%s\n", curr_ent->d_name);
return;
}
我做错了什么?
【问题讨论】:
-
current被分配了c,然后你将它传递给下一个listdir()调用。递归时可能需要将curr_ent和current结合起来。 -
请不要重蹈覆辙。请改用
nftw()。它设计就是为了做到这一点——遍历文件树。
标签: c recursion directory-listing