实现ls -l 功能,index,rindex函数的使用

index(); rindex();-----------------------------------------------------------------

index第一次遇到字符c,rindex最后一次遇到字符c,返回值都是从那个位置开始往后的字符串地址

#include <stdio.h>
#include <sys/types.h>
#include <pwd.h>
#include <sys/stat.h>
#include <unistd.h>
#include <grp.h>
#include <time.h>
#include <dirent.h>
#include <string.h>int do_ls_file(const char *filename)
{//stat --获取文件属性信息 struct stat st;if (stat(filename,&st) < 0) //"Music" stat("./Music",&st) //"~/Music"{perror("stat fail");return -1;}//1.打印 文件类型switch(st.st_mode & S_IFMT){case S_IFSOCK:putchar('s');break;case S_IFLNK:putchar('l');break;case S_IFREG:putchar('-');break;case S_IFBLK:putchar('b');break;case S_IFCHR:putchar('c');break;case S_IFIFO:putchar('p');break;case S_IFDIR:putchar('d');break;default:putchar('?');break;}//2.文件权限 st.st_mode&S_IRUSR?putchar('r'):putchar('-');	st.st_mode&S_IWUSR?putchar('w'):putchar('-');	st.st_mode&S_IXUSR?putchar('x'):putchar('-');	st.st_mode&S_IRGRP?putchar('r'):putchar('-');	st.st_mode&S_IWGRP?putchar('w'):putchar('-');	st.st_mode&S_IXGRP?putchar('x'):putchar('-');	st.st_mode&S_IROTH?putchar('r'):putchar('-');	st.st_mode&S_IWOTH?putchar('w'):putchar('-');	st.st_mode&S_IXOTH?putchar('x'):putchar('-');	//3.硬链接数printf(" %ld",st.st_nlink);//4.所属用户 printf(" %s",getpwuid(st.st_uid)->pw_name);//5.所属组printf(" %s",getgrgid(st.st_gid)->gr_name);//6.大小 printf(" %ld",st.st_size);//7.最后修改时间 struct tm *ptm = localtime(&st.st_mtime);	printf(" %02d月%02d %02d:%02d",ptm->tm_mon+1,ptm->tm_mday,ptm->tm_hour,ptm->tm_min);//8.名字printf(" %s\n",rindex(filename,'/')+1);  //filename是人为加上带路径的文件名return 0;
}int do_ls_dir(const char *dirname)
{DIR *dir = opendir(dirname);if (dir == NULL){perror("opendir fail");return -1;}struct dirent *pdir = NULL;while (pdir=readdir(dir)){//		printf("name = %s\n",pdir->d_name); //"Music"char path[1024] = {0};// "~"// "~/" if(pdir->d_name[0] != '.'){dirname[strlen(dirname)-1] == '/'?sprintf(path,"%s%s",dirname,pdir->d_name):sprintf(path,"%s/%s",dirname,pdir->d_name);//带了路径的文件名do_ls_file(path); //"~/Music"}}closedir(dir);
}//ls 1.txt 
//ls dir
int main(int argc, const char *argv[])
{if (argc != 2){printf("Usage: %s <filename>\n",argv[0]);return -1;}//	do_ls_file(argv[1]);do_ls_dir(argv[1]);return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS7.7安装XIAOJUSURVEY问卷系统

XIAOJUSURVEY问卷系统&#xff0c;适用于市场调研、客户满意度调研、在线考试、投票、报道、测评等众多场景。数据能力上&#xff0c;经过上亿量级打磨&#xff0c;沉淀了分题统计、交叉分析、多渠道分析等在线报表能力&#xff0c;快速满足专业化分析。 一、在CentOS7.7上安装…

01使用调试工具

文章目录 前言一、用openocd打开单片机二、利用4444端口向单片机写入hex文件三、利用3333端口和gdb进行调试四、之前我出的问题总结 前言 之前写了一篇关于在linux下搭建stm32标准库的文章后&#xff0c;有一些小伙伴们还是出现了一些奇奇怪怪的错误&#xff0c;这一篇文章就是…

160.乐理基础-等和弦与一些做题问题

如果到这五线谱还没记住还不认识的话去看102.五线谱-高音谱号与103.五线谱-低音谱号这两个里&#xff0c;这里面有五线谱对应的音名&#xff0c;对比着看 如果一章没落下&#xff0c;看到这里&#xff0c;但是看不懂什么意思&#xff0c;那就强行下看&#xff0c;看着看着指不…

git下载安装教程

git下载地址 有一个镜像的网站可以提供下载&#xff1a; https://registry.npmmirror.com/binary.html?pathgit-for-windows/图太多不截了哈哈&#xff0c;一直next即可。

外包干了5年,技术退步明显.......

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入杭州某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

鸿蒙HarmonyOS应用开发之Rawfile开发指导

场景介绍 开发者可以通过本指导了解在OpenHarmony应用中&#xff0c;如何使用Native Rawfile接口操作Rawfile目录和文件。功能包括文件列表遍历、文件打开、搜索、读取和关闭Rawfile。 接口说明 接口名描述NativeResourceManager *OH_ResourceManager_InitNativeResourceMan…

基于Springboot的疫情隔离酒店管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的疫情隔离酒店管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系…

最新版puppeteer 在linux下的安装教程

最新版的 puppeteer 在安装的时候&#xff0c;Chromium不会自动下载&#xff0c;导致安装失败 这个时候需要跳过Chromium的安装&#xff0c;然后手动下载Chromium并安装。 1、先设置npm跳过Chromium下载 export PUPPETEER_SKIP_DOWNLOADtrue 2、安装puppeteer npm i pup…

AI+软件工程:10倍提效!用ChatGPT编写系统功能文档

系统功能文档是一种描述软件系统功能和操作方式的文档。它让开发团队、测试人员、项目管理者、客户和最终用户对系统行为有清晰、全面的了解。 通过ChatGPT&#xff0c;我们能让编写系统功能文档的效率提升10倍以上。 用ChatGPT生成系统功能文档 我们以线上商城系统为例&#…

linux下的打包/解包命令(tar,zip/unzip)

目录 打包/解包 作用 zip -r选项 unzip -d选项 如果不使用递归压缩 -l / -v选项 tar 介绍 选项 示例 打包/解包 作用 使多个文件变成一个文件,不易造成数据缺失使下载时间变短 zip 将目录或文件压缩成zip格式 -r选项 递归式压缩某目录及其所有子目录中的文件 如果不…

【爬虫基础】第1讲 网络爬虫基本知识

什么是网络爬虫 网络爬虫&#xff08;Web crawler&#xff09;是一种自动化程序&#xff0c;用于在互联网上收集信息。它可以通过扫描和解析网页的超链接&#xff0c;自动访问网页并抓取所需的数据。网络爬虫常用于搜索引擎和数据采集工具中。 作用 通过有效的爬虫手段批量采…

Vue.js高效前端开发(增删查)

效果图 代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><div id"app"><span>ID</span><input type"text" name"…