在网上找到的linux下用C遍历目录的源代码 具体看补充。。

编译没有出错但是执行的时候总是显示找不到/usr/keygoe/ini/换了另外的文件夹也是一样求前辈们看看到底出了什么问题源码如下。。#include<stdio.h>... 编译没有出错 但是执行的时候总是显示找不到/usr/keygoe/ini/ 换了另外的文件夹也是一样 求前辈们看看到底出了什么问题 源码如下。。

#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <dirent.h>
#include <sys/stat.h>
char filename[256][256];
int len = 0;
int trave_dir(char* path, int depth)
{
DIR *d;
struct dirent *file;
struct stat sb;

if(!(d = opendir(path)))
{
printf("error opendir %s!!!\n",path);
return -1;
}
while((file = readdir(d)) != NULL)
{

if(strncmp(file->d_name, ".", 1) == 0)
continue;
strcpy(filename[len++], file->d_name);

if(stat(file->d_name, &sb) >= 0 && S_ISDIR(sb.st_mode) && depth <= 3)
{
trave_dir(file->d_name, depth + 1);
}
}
closedir(d);
return 0;
}
int main()
{
int depth = 1;
int i;
trave_dir("/usr/keygoe/ini/", depth);
for(i = 0; i < len; i++)
{
printf("%s\t", filename[i]);
}
printf("\n");
return 0;
}
展开
 我来答
muthos
2012-10-26
知道答主
回答量:8
采纳率:0%
帮助的人:8.3万
展开全部
1、系统里面没有/usr/keygoe/ini文件夹或没有权限。可以修改main, 遍历命令行传入的文件夹;
2、filename设置为[256][256],如果文件比较多,程序会崩溃的;
3、遍历子文件夹时,只保存了文件名,没有添加上级路径。
追问
第一个我修改了文件夹但还是这个问题,待会用root权限试试。第二个我才刚装linux应该里面没什么东西吧。。第三个没怎么看懂,跪求具体解释!
追答
假设文件夹"/usr/keygoe/ini/"下有一个文件夹abc,第一次运行时入口参数为"/usr/keygoe/ini/",遍历时file->d_name应该是"abc",递归时将遍历文件夹"abc"子文件夹,并不是文件夹"/usr/keygoe/ini//abc",所以会出错。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式