文件查看器(c++)

第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 **********/
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/252701.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

[GFCTF2021]文件查看器复现

考点: 1.php反序列化 2.可调用对象数组对方法的调用 3.编码转换的利用 4.php伪协议过滤器的利用 5.垃圾回收GC机制的利用 开局登录页面&#xff0c;输入admin,admin之后进入文件查看页面,并且扫描后发现有www.zip源码泄露 稍微探究一下&#xff0c;发现这个项目的设计模式很有意…

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

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

OFFICE专业增强版2016 32位安装VISIO出错记录

系统为64位&#xff0c;此时想安装VISIO2016 23位&#xff0c;出现如下问题&#xff1a; 参考&#xff1a;原文链接&#xff1a;https://blog.csdn.net/M_try/article/details/113571471 即可解决&#xff1a; 第一步&#xff1a;按住键盘上的“WinR”&#xff0c;打开运行窗…

【安装教程】 【Visio2019】(附带安装包下载)

&#xff08;注意&#xff01;&#xff01;&#xff01; 安装完成之后&#xff0c;会覆盖原版的office&#xff01;&#xff01;&#xff01;&#xff09; https://pan.baidu.com/s/1uOcHz-fTEMsQhwU_yP6j71Q 一、Visio2019安装步骤 1.解压【Visio2019.rar】压缩包。&#xff…

visio哪个版本好用

Office Visio 是office软件系列中的负责绘制流程图和示意图的软件,是一款便于IT和商务人员就复杂信息、系统和流程进行可视化处理、分析和交流的软件.使用具有专业外观的 Office Visio 图表,可以促进对系统和流程的了解,深入了解复杂信息并利用这些知识做出更好的业务决策 vis…

流程图软件,visio,安装下载教程

建议&#xff1a;如果是插入到word中&#xff0c;建议使用2013版的visio&#xff0c;通过插入对象的方式&#xff0c;插入到word中。 方法一&#xff1a;插入-对象-新建visio 方法二&#xff1a;visio中画好图&#xff0c;插入-对象-由文件创建 这样的word中的visio对象&…

Visio从安装到使用完整版

文章目录 前言一、安装二、教程1.安装模具库2.如何制作模具库3.其他3.1 编辑上下标3.2 在visio中插入数学公式3.3 布尔运算3.4 设置任意两个点相连 总结 前言 最近需要使用Visio进行绘图&#xff0c;用了一个晚上学习了该软件&#xff0c;然后进行了一定的整理&#xff08;从安…

visio 2020 最新版安装过程及注意事项

visio 2020官方版是一款由Microsoft公司精心打造的实用型流程图绘制软件&#xff0c;visio 2020免费版功能全面&#xff0c;可以帮您快速且直观地绘制出各种流程图&#xff0c;Microsoft visio 2020软件便捷好用&#xff0c;支持多种流程图、网络图、组织结构图、工程设计以及其…

PyCharm激活

原文地址:https://blog.csdn.net/u014044812/article/details/78727496 社区版和专业版区别: 因公司的需求&#xff0c;需要做一个爬取最近上映的电影、列车号、航班号、机场、车站等信息&#xff0c;所以需要我做一个爬虫项目&#xff0c;当然java也可以做爬虫&#xff0c;但是…

PyCharm 激活

今天给大家带来新的激活补丁;原来使用激活码激活也可以换成补丁激活了&#xff0c;已激活过的请忽略〜 激活前准备工作 激活前请先关闭pycharm修改配置文件的时候你需要填写你的安装路径如果出现修改配置文件后无法打开pycharm&#xff0c;那就移动补丁的位置&#xff0c;比如…

中国互联网众筹行业

近些年&#xff0c;中国互联网发展迅速&#xff0c;众筹这种起源于美国的新型互联网金融模式更是一直处于风口浪尖。在“大众创业、万众创新”的背景下&#xff0c;这种低门槛的融资模式也深受欢迎&#xff0c;加上阿里、京东、苏宁三大电商的巨头的相继入场&#xff0c;更令这…

京东,你玩的是众筹还是预售?

随着众筹的火热&#xff0c;互联网巨头们也纷纷将触手伸向了这块大蛋糕。淘宝众筹、苏宁众筹、京东众筹&#xff0c;三大电商众筹平台可谓三分天下&#xff0c;京东众筹以一贯高调的风格赚足了人们的眼球。 三足鼎立&#xff0c;一丝心寒 据鸣金网统计&#xff0c;截止至2015年…

小牛电动京东众筹活动中的违约行为记录

2019独角兽企业重金招聘Python工程师标准>>> * 在发货顺序上&#xff0c;最初约定的是按照订单顺序&#xff0c;并且众筹规则中约定优先发货给众筹用户。可在众筹发货前&#xff0c;O2O的店里已经开始售卖。发货顺序则完全看小牛心情。。。 * 在发货时间上&#xff…

八爪鱼爬取数据—以京东众筹为例

八爪鱼爬取数据—以京东众筹为例 第一步&#xff0c;打开八爪鱼&#xff0c;选择自定义采集&#xff1b;第二步&#xff0c;将网页输入“网址”框内&#xff0c;点击“保存网址”&#xff1b;第三步&#xff0c;在出现的网址内容中选择“下一页”—循环点击下一页&#xff0c;第…

Scrapy框架爬虫—以京东众筹为例

Scrapy框架爬虫——以京东众筹为例 第一步&#xff0c; 打开命令提示符&#xff0c;创建一个Scrapy框架&#xff1b;第二步&#xff0c;定位到创建的文件夹&#xff1b;第三步&#xff0c;在spider文件夹中创建一个.py文件&#xff08;注&#xff1a;不要关闭命令提示符&#x…

电梯调度算法简单实现(c语言)

一、算法思想 电梯算法与扫描算法类似&#xff0c;但磁头不会每次都移动到柱面尽头&#xff0c;一旦当前方向上没有访问请求但相反方向上有请求时&#xff0c;就改变磁头臂的移动方向继续处理。电梯算法的本质是一个具有方向约束的最短寻道时间优先算法&#xff08;SSTF算法&am…

电梯调度算法-C++

1.算法解析 扫描算法&#xff08;SCAN&#xff09;又称电梯调度算法&#xff0c;SCAN算法是磁头前进方向上的最短查找时间优先算法&#xff0c;它排除了磁头在盘面局部位置上的往复移动&#xff0c;SCAN算法在很大程度上消除了SSTF算法的不公平性&#xff0c;但仍有利于对中间…

磁盘寻道算法 电梯调度算法 C++实现

磁盘寻道算法 电梯调度算法 C实现 #include<iostream> using namespace std; #include<vector> #include<algorithm> compute(vector<int> v,int x,int d) {double w1;sort(v.begin(),v.end());if(d1){cout<<endl<<" 磁头从"…

电梯算法java_电梯调度算法总结

一 :任务要求 本次的程序任务和要求如上图所示,需要有4部电梯同时运行,每部电梯都有自己的限制且被同一控制器所控制,希望有图形显示效果,本次的任务我们组已经完成,关于编程的历程与总结现在就一一道来。 二:初步构想阶段 我们先尝试解决最核心的问题,即电梯的调度算法…

群控电梯调度算法

Java面试笔试面经、Java技术每天学习一点 公众号Java面试 关注我不迷路 1.传统电梯调度算法 1.1先来先服务算法(FCFS) 先来先服务(FCFS-First Come First Serve)算法&#xff0c;是一种随即服务算法&#xff0c;它不仅仅没有对寻找楼层进行优化&#xff0c;也没有实时性的特征&…