ls -R 的递归实现
LinuxC文件操作
递归
动态数组
之前对递归和动态数组用的不是很多,可能理解已不是很深
这一次实现ls -R的递归刚好巩固了自己的薄弱点
下面主要是重新梳理一下之前的逻辑
不说说了,先放码:
void display_dir(int flag,char*name)
{
DIR * dir;
struct dirent *ptr;
int i,count = 0;
struct stat buf;
char name_dir[10000];
if(chdir(name)<0) //将输入的目录改为当前目录,下面操作的前提
{
my_err("chdir",__LINE__);
}
if(getcwd(name_dir,10000)<0){
my_err("getcwd",__LINE__); //获取当前目录的绝对路径(重要,下面的打开目录的操作需要这个路径,否则需要手动添加)
}
printf("%s:\n",name_dir);
dir = opendir(name_dir); //用新获得的路径打开目录
if(dir==NULL){
my_err("opendir",__LINE__);
}
while((ptr = readdir(dir))!=NULL){
if(f_maxlen<strlen(ptr->d_name))
f_maxlen = strlen(ptr->d_name);
count++;
}
closedir(dir);