第2关:文件查看器

挑战任务

参加“绿盟杯”竞赛的小红遇到一个问题,她想要编写代码实现一个文件查看器,要实现指定文件夹下所有文件以及文件夹目录结构的展示。

你来帮她实现这个功能吧。

编程要求

编程实现对给定文件夹目录结构的展示,如果是文件夹则在其名字之前加上+--若是文件则加上--,上级目录与下级目录、下级文件用两个空格作为间隔,同级下依照文件夹、文件的首字母顺序依次打印;补充完善右侧代码区中的showDirStructure(char *folderPath)函数实现要求的功能,其中函数参数含义如下:

  • folderPath:指定要显示的文件夹

测试说明

样例1

输入:src/step2/root

输出:

样例2

输入:src/step2/dir

输出:

提示: 在C语言中使用readdir函数可以获取目录内容,使用stat函数判断文件类型。

你可以通过如下链接下载本关涉及到的目录文件:
https://www.educoder.net/attachments/download/200773/step2Dir.zip


开始挑战吧,祝你成功!

/**************************** 函数功能: 遍历文件夹* return: void* @para folderPath: 文件夹路径
***************************/
void showDirStructure(char *folderPath)
{/********** BEGIN **********/static int floor=0;  //层数for(int i=0;i<floor*2;i++)cout<<" ";  //输出前置空格char buf[256];int len=0;for(int i= strlen(folderPath)-1;folderPath[i]!='/';i--) buf[len++]=folderPath[i];buf[len]='\0';for(int i=0;i<len/2;i++){char t=buf[i];buf[i]=buf[len-1-i];buf[len-1-i]=t;}cout<<"+--"<<buf<<endl;DIR *dir=opendir(folderPath);struct dirent *i=NULL;while((i=readdir(dir))!=NULL){if(!strcmp(i->d_name,".")||!strcmp(i->d_name,".."))continue;strcpy(buf,folderPath);strcat(buf,"/");strcat(buf,i->d_name);struct stat M;stat(buf,&M);if(S_ISDIR(M.st_mode)){floor+=1;showDirStructure(buf);floor-=1;}else{if(S_ISREG(M.st_mode)){char ext[256];len=0;for(int j=strlen(buf)-1;buf[j]!='.';j--)ext[len++]=buf[j];ext[len]='\0';for(int j=0;j<len/2;j++){char t=ext[j];ext[j]=ext[len-1-j];ext[len-1-j]=t;}if(!strcmp(ext,"jpg")||!strcmp(ext,"png")||!strcmp(ext,"bmp")){for(int j=0;j<(floor+1)*2;j++)cout<<" ";cout<<"--"<<i->d_name<<endl;}}}}closedir(dir);/********** END **********/
}

文件查看器(c++)相关推荐

  1. Linux 下高级日志文件查看器Log File Navigator

    Log File Navigator,简称lnav,是一款面向小规模的适用于 Linux 的高级日志文件查看器.它是一个终端应用程序,可以理解您的日志文件,让您轻松找到问题,几乎不需要什么设置. ln ...

  2. 【玩转.Net MF – 03】远程文件查看器

    虽说目前.Net Micro Framework已经支持文件系统(FAT16/FAT32),但在远程还无法直接访问,从某种意义上讲,无法和PC交互的存储介质显得有些鸡肋.我做SideShow相关开发的 ...

  3. 使用广泛的开源PCB文件查看器 Gerbv 含多个严重漏洞

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 专栏·供应链安全 数字化时代,软件无处不在.软件如同社会中的"虚拟人",已经成为支撑社会正常运转的最基本元素之一,软件的安全 ...

  4. bin文件查看器app_腾讯文件:腾讯官方出品的微信 / QQ 文件管理和清理利器

    前言 微信和 QQ 基本是大家手机上的必备应用了,但是使用时间久了,难免会积攒很多文件,甚至引起应用卡顿. 包括垃圾/缓存文件,或者我们接收保存的文件等等,占据了大量空间,又不好管理. 今天就分享一款 ...

  5. 【实用软件】Json文件查看器(支持查看超大JSON文件)

    内容信息 软件类型:绿色 软件平台:电脑 软件版本:v1.0 软件大小:3.4MB 软件特点 Json文件查看器是一个用来查看Json文件的的绿色软件

  6. 好用的Bin文件查看器,J-flash

    工作中,很多地方用到Bin文件,如编译完成后的固件和从MCU的Flash读出来的文件,这时候一个好的Bin文件查看器至关重要.经常我们用STM32自带的STM32 ST-LINK Utility可以直 ...

  7. IFC模型文件查看器(基于IFC++开源库实现)

    关于IFC IFC是由buildingSMART以工业的产品资料交换标准STEP编号ISO-10303-11的产品模型信息描述用EXPERSS语言为基础,基于BIM中AEC/FM相关领域信息交流所指定 ...

  8. html文件阅读器电脑版,Excel文件查看器

    Excel文件查看器电脑版是一款文档查看软件,Excel文件查看器电脑版对于需要临时查看Excel文档但是又不需要修改它的用户来说,Excel文件查看器电脑版无疑是最佳选择,速度快并且小巧,是个不错的 ...

  9. 试试Visual Studio中新的远程文件查看器

    今天,我们很高兴地宣布,在 Visual Studio 17.6 Preview 1 中,一项新的工具窗口诞生:远程文件查看器. 通过这个工具窗口,你可以从远程计算机上浏览,上传和下载文件.另外,可以 ...

  10. JAVA面向对象-文件类 第3关:文件查看器

    文章目录 前言 一.问题 二.代码 效果 前言 记录一下做头歌上java的题目,顺便试试CSDN怎么写文章. 一.问题 本关任务:实现一个文件查看器,要实现指定文件夹下所有文件以及文件夹目录结构的展示 ...

最新文章

  1. 自学Java和Java培训班的学习效果
  2. windows64下安装MySQLdb连接数据库
  3. TensorFlow 2.0深度强化学习指南
  4. 全网最详细的docker配置nginx http2 优化高速访问
  5. body属性文本标记和排版标记
  6. 数据帮助类(DataHelper)
  7. MAC地址生成器(可带跳数)
  8. sendkeys安装包_利用Windows命令行解压zip压缩文件(不借助第三方软件)
  9. C++实现24点游戏
  10. xshell linux cmd命令大全,Linux(Xshell)命令大全
  11. Android 颜色透明度(不透明度)计算
  12. vue中虚拟dom和diff算法
  13. oracle按格式展示数据,ORACLE按格式导出数据到文本
  14. effective C++ 读书笔记
  15. QUOTED_IDENTIFIER选项设置不正确
  16. 网盘的暴力营销,你们的脸遮遮掩掩
  17. 用html和js制作一个控制灯泡开关效果
  18. 论文笔记- AdaDepth: Unsupervised Content Congruent Adaptation for Depth Estimation
  19. vbs获取CPU温度并在桌面显示
  20. 富力集团解码“新高端医疗”

热门文章

  1. 大咖驾到!5A学霸教你如何使用鱼骨图解决项目难题
  2. 雾里看花的PDM系统实施
  3. 内连接以及外连接的注意事项
  4. PPT(一) PPT课程:PPT排版中的视觉化表达
  5. 计算机网络技术入学要求,诺森比亚大学计算机网络技术理科硕士入学条件及实习就业...
  6. 继QSFP-DD 400G后,QSFP-DD800G会是下一个风口吗?
  7. 宽和窄俯卧撑哪个更难_在俯卧撑的训练中,宽距和窄距有什么不同?哪种效果更好?...
  8. Matlab 3d 画图方法
  9. swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
  10. Vue3中使用Tinymce富文本编辑器(版本最新)