在网上找到的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;
} 展开
#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;
} 展开
1个回答
展开全部
1、系统里面没有/usr/keygoe/ini文件夹或没有权限。可以修改main, 遍历命令行传入的文件夹;
2、filename设置为[256][256],如果文件比较多,程序会崩溃的;
3、遍历子文件夹时,只保存了文件名,没有添加上级路径。
2、filename设置为[256][256],如果文件比较多,程序会崩溃的;
3、遍历子文件夹时,只保存了文件名,没有添加上级路径。
追问
第一个我修改了文件夹但还是这个问题,待会用root权限试试。第二个我才刚装linux应该里面没什么东西吧。。第三个没怎么看懂,跪求具体解释!
追答
假设文件夹"/usr/keygoe/ini/"下有一个文件夹abc,第一次运行时入口参数为"/usr/keygoe/ini/",遍历时file->d_name应该是"abc",递归时将遍历文件夹"abc"子文件夹,并不是文件夹"/usr/keygoe/ini//abc",所以会出错。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询