Advertisement

实现ls命令(-l -a -R)

阅读量:

在三个选项中,R 的实现难度最高,以下将简要介绍在实际操作过程中所面临的一些挑战。

第一次

最初尝试实现 -R 功能时,仅能处理规模较小的目录结构,一旦对根目录进行测试,几秒钟内便会崩溃。此次递归方式的设计为:每当遇到一个目录时,便将其展开,并持续深入直至最底层后返回,即采用深度优先搜索(dfs)的策略。然而常规需求通常要求逐层展开,即广度优先搜索(bfs)的方式。

第二次

采用 BFS 递归方式进行处理。存储方面,为防止出现栈溢出的情况,此次选用 malloc 函数来申请内存空间。

复制代码
      char **filenames = (char **)malloc(sizeof(char *) * count);
        for(int i = 0;i < count;i++)  //count 为 文件的个数
        {   
                filenames[i] = (char *)malloc(sizeof(char) * PATH_MAX + 1); 
        }  
    
    
      
      
      
      
      
    

随后自行调用自身即可完成操作

问题:
1: 在使用 printf 进行调试过程中,发现未添加 ‘\n’ 时不会产

全部评论 (0)

还没有任何评论哟~