homework 张一刚
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<time.h>
#include<pwd.h>
#include<grp.h>
#include<dirent.h>
#include<errno.h>
#include<string.h>
#include<stdlib.h>
int l_stat(char * p1,char * p);
void a_stat(char * p);
void i_stat(char * p);
void e_dir(char * p);
static long numbers;
//判断是否隐藏文件
int is_spot(const char * p)
{
if(*p == '.')
return ;
else
return ;
}
void e_dir(char * p)
{
struct stat mystat;
DIR * dir;
struct dirent * pd;
int cent = lstat(p,&mystat);
if((mystat.st_mode & S_IFMT) == S_IFDIR)
{
dir = opendir(p);
if(dir == NULL)
{
if(errno)
{
perror("opendir()");
return;
}
}
while()
{
pd = readdir(dir);
if(pd == NULL)
{
if(errno)
{
perror("readdir()");
return ;
}
break;
}
l_stat(p,pd->d_name);
}
closedir(dir);
}
else
l_stat(".",p);
printf("%ldk\n",numbers/);
return ;
}
void h_stat(char * p)
{
struct stat mystat;
DIR * dir;
struct dirent * pd;
int cent = stat(p,&mystat);
if((mystat.st_mode & S_IFMT) == S_IFDIR)
{
dir = opendir(p);
if(dir == NULL)
{
if(errno)
{
perror("opendir()");
return;
}
}
while()
{
pd = readdir(dir);
if(pd == NULL)
{
if(errno)
{
perror("readdir()");
return ;
}
break;
}
if(is_spot(pd->d_name) == )
printf("%s \n",pd->d_name);
}
closedir(dir);
}
else
printf("%s \n",p);
return;
}
int main(int argc,char ** argv)
{
if(argc < )
return ;
char * op = "-laih";
int s;
while()
{
s = getopt(argc,argv,op);
if(s == -)
break;
switch(s)
{
case 'l':e_dir(argv[]); break;
case 'a':a_stat(argv[]);break;
case 'i':i_stat(argv[]);break;
case 'h':h_stat(argv[]);break;
case '?':printf("无该选项\n");break;
// case 1 : printf("%s\n",argv[2]);break;
default:break;
}
}
return ;
}
void i_stat(char * p)
{
struct stat mystat;
int nodenumber;
DIR * dir;
struct dirent * pd;
int cent = stat(p,&mystat);
if((mystat.st_mode & S_IFMT) == S_IFDIR)
{
dir = opendir(p);
if(dir == NULL)
{
if(errno)
{
perror("opendir()");
return;
}
}
while()
{
pd = readdir(dir);
if(pd == NULL)
{
if(errno)
{
perror("readdir()");
return ;
}
break;
}
if(is_spot(pd->d_name) == )
{
printf("%ld ",pd->d_ino);
printf("%s\n",pd->d_name);
}
}
closedir(dir);
}
else
{
printf("%ld ",mystat.st_ino);
printf("%s\n",p);
}
}
void a_stat(char * p)
{
struct stat mystat;
DIR * dir;
struct dirent * pd;
int cent = stat(p,&mystat);
if((mystat.st_mode & S_IFMT) == S_IFDIR)
{
dir = opendir(p);
if(dir == NULL)
{
if(errno)
{
perror("opendir()");
return;
}
}
while()
{
pd = readdir(dir);
if(pd == NULL)
{
if(errno)
{
perror("readdir()");
return ;
}
break;
}
printf("%s ",pd->d_name);
}
}
else
printf("%s ",p);
}
// 追加/获得路径
char * dir_cat(const char * p,const char * buf)
{
char * buf_cat = malloc();
memset(buf_cat,'\0',);
strcpy(buf_cat,p);
buf_cat[strlen(buf_cat)] = '/';
strcat(buf_cat,buf);
return buf_cat;
}
//获取文件属性
int l_stat(char * p,char * p_name)
{
struct tm * tmp = NULL;
struct passwd * pwd = NULL;
struct group * wd = NULL;
struct stat mystat;
char buf[];
char * p1;
int cnt;
p1 = dir_cat(p,p_name);
cnt = stat(p1,&mystat);
if(cnt == -)
{
perror("stat()");
return -;
}
//判断是不是隐藏文件
if(is_spot(p_name) == )
{
numbers += mystat.st_blocks;
switch(mystat.st_mode & S_IFMT)
{
case S_IFREG: putchar('-');break;
case S_IFBLK: putchar('b');break;
case S_IFDIR: putchar('d');break;
case S_IFCHR: putchar('c');break;
case S_IFIFO: putchar('p');break;
default:break;
}
//拥有者
if(mystat.st_mode & S_IRUSR)
putchar('r');
else
putchar('-');
if(mystat.st_mode & S_IWUSR)
putchar('w');
else
putchar('-');
if(mystat.st_mode & S_IXUSR)
putchar('x');
else
putchar('-');
//所属组
if(mystat.st_mode & S_IRGRP)
putchar('r');
else
putchar('-');
if(mystat.st_mode & S_IWGRP)
putchar('w');
else
putchar('-');
if(mystat.st_mode & S_IXGRP)
putchar('x');
else
putchar('-');
//其他
if(mystat.st_mode & S_IROTH)
putchar('r');
else
putchar('-');
if(mystat.st_mode & S_IWOTH)
putchar('w');
else
putchar('-');
if(mystat.st_mode & S_IXOTH)
putchar('x');
else
putchar('-');
//硬链接个数
printf("%2ld ",mystat.st_nlink);
//文件拥有者名字
pwd = getpwuid(mystat.st_uid);
printf("%s ",pwd->pw_name);
//文件所属组
wd = getgrgid(mystat.st_gid);
printf("%s ",wd->gr_name);
//总字节个数
printf("%5ld ",mystat.st_size);
//获取时间
tmp = localtime(&mystat.st_mtim.tv_sec);
strftime(buf,,"%m 月 %d %H:%M",tmp);
printf("%s ",buf);
//文件名
printf("%s\n",p_name);
}
return ;
}
homework 张一刚的更多相关文章
- HDU 1789 Doing Homework again(贪心)
Doing Homework again 这只是一道简单的贪心,但想不到的话,真的好难,我就想不到,最后还是看的题解 [题目链接]Doing Homework again [题目类型]贪心 & ...
- HDU 1074 Doing Homework (dp+状态压缩)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1074 题目大意:学生要完成各科作业, 给出各科老师给出交作业的期限和学生完成该科所需时间, 如果逾期一 ...
- HUST 1555 A Math Homework
1555 - A Math Homework 时间限制:1秒 内存限制:128兆 338 次提交 131 次通过 题目描述 QKL is a poor and busy guy, and he ...
- Doing Homework again(杭电1789)
Doing Homework again Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- kuangbin专题十二 HDU1074 Doing Homework (状压dp)
Doing Homework Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- 刚接触Linux,菜鸟必备的小知识点(一)
身为一个将要大四的学生,而且还是学计算机的没有接触过linux简直是羞愧难当.这个假期做了一个软件测试员,必须要熟悉linux的操作,所以对于我这个菜鸟我也就说几点比较重要的小知识点吧. 第一.cd指 ...
- bzoj 4320: ShangHai2006 Homework
4320: ShangHai2006 Homework Time Limit: 10 Sec Memory Limit: 128 MB Description 1:在人物集合 S 中加入一个新的程序员 ...
- day4(homework)
第八单元 1) 将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/1.txt(覆盖) 2) 将用户信息数据库文件和用户密码数据库文件纵向合并为一个文件/2.txt(追加) 3) 将/1.txt ...
- 刚写完的商城erp + 这个商城前台,新鲜出炉。自己1个人写, 包括php框架和前端html页面.
刚写完的商城erp + 这个商城前台,新鲜出炉.自己1个人写, 包括php框架和前端html页面. 刚写完的商城erp + 这个商城前台,新鲜出炉.自己1个人写, 包括php框架和前端html页面.
随机推荐
- Swing学习1——总体概述
以下来自于JDK1.6 一.Swing学习我划分为两个方面: 一方面Swing的界面设计部分,包括相关组件类的继承关系,组件的功能用途,布局管理: 1.首先继承关系上自上而下为 java.lang.O ...
- web 自定义标签
Web Components 标准非常重要的一个特性是,它使开发者能够将HTML页面的功能封装为 custom elements(自定义标签).而自定义标签的好处,就是在大型web开发的时候,可以封装 ...
- L1 loss 与 MSE
---恢复内容开始--- 今天在训练时遇到的问题 把损失函数由 MSE 改成 L1 Loss 的时候 Loss 有了明显的下降 以前一直觉得 MSE 相对来说会更好 ,因为求导的话有标签与结果的差值作 ...
- java.io.IOException: 你的主机中的软件中止了一个已建立的连接。
1.异常表现:我在jsp文件中有一个<form>表单,里面有一个<button>保存事件按钮.<button onclick="addOrUPdate()&q ...
- cocoapod podpackage 自动根据podfile生成framework实现二进制化,原创脚本,转载请注明出处
#!/bin/bash # created by lichanghong ; mail: lichanghong@soyoung.com # XXX.sh AFNetworking 3.0.0 se ...
- ZIP、tar.gz压缩时排除指定目录
1.ZIP 压缩时排除一个文件夹下所有内容zip -r sss.zip sss/ -x "sss/222/*" 压缩时排除指定多个文件夹下所有内容zip -r sss.zip ss ...
- #20175120彭宇辰-实验一《Java开发环境的熟悉》实验报告
Java开发环境的熟悉-1 实验要求:1 .建立“自己学号exp1”的目录2 .在“自己学号exp1”目录下建立src,bin等目录3 .javac,java的执行在“自己学号exp1”目录4 .提交 ...
- UML第一次作业:UML用例图绘制
UML用例图绘制 一.plantuml用例图语法小结 1.用例 用法:用例用圆括号(),或者使用关键字来定义用例 示例1: @startuml (First UML) (Another UML)a ...
- css ——行级元素与块级元素解析
一 . 先说说二者的本质区别吧: 行级元素是可以和其他元素处于一行,不用必须另起一行.块级元素是每个块级元素都是独自占一行,其后的元素也只能另起一行,并不能两个元素共用一行. 二 .下面 ...
- java-15习题
通过键盘分别输入年份.月份.日把它存储到日期时间对象中,然后计算1000天以后的日期并输出. import java.util.Calendar; import java.util.Scanner; ...