当前位置: 首页 > news >正文

网站标题采集想学软件开发报什么专业

网站标题采集,想学软件开发报什么专业,网页制作模板ppt报告,企业网站建设的实验报告一 问题 对ls1的功能进行扩展#xff0c;以达到类似ll命令的功能。 二 分析 在ls1中#xff0c;我们利用readdir()函数和dirent结构体来获得目标文件夹内的文件名#xff08;dirent-d_name#xff09;。  现在我们借助函数stat()和结构体stat以及上面得到的文件名来获…一 问题   对ls1的功能进行扩展以达到类似ll命令的功能。 二 分析   在ls1中我们利用readdir()函数和dirent结构体来获得目标文件夹内的文件名dirent-d_name。  现在我们借助函数stat()和结构体stat以及上面得到的文件名来获得该目录内文件的详细信息参看后面的“相关函数与结构体”部分。 三 实现 1 头文件 #includestdio.h #includesys/types.h #includedirent.h #includesys/stat.h #includestring.h 2 相关函数声明 void do_ls(char dirname[]); void dostat(char *filename); void show_file_info(char *filename,struct stat *info_p); void mode_to_letters(int mode,char str[]); char *uid_to_name(uid_t uid); char *gid_to_name(gid_t gid); 3 主函数 获得目录的路径并将该路径传递给do_ls()函数 main(int ac,char *av[]) {if(ac 1){do_ls(.);}else{while(--ac){printf(%s:\n,*av);/* 传递目录路径到do_ls函数 */do_ls(*av);}} } 4 do_ls()函数 结合opendir()函数和readdir()函数通过目录的路径获得该目录内各文件或文件夹的名称并将该名称传递给dostat()函数 void do_ls(char dirname[]) {DIR *dir_ptr;struct dirent *direntp;/* 使用opendir()函数“打开”目录返回指向该目录的指针 */if((dir_ptr opendir(dirname))NULL){fprintf(stderr,ls2:cannot open %s\n,dirname);}else{/* 使用readdir()函数读取指针指向的目录获得dirent结构体 */while((direntp readdir(dir_ptr))!NULL){/* 通过dirent结构体获得文件名并将文件名传递给dostat()函数 */dostat(direntp-d_name);}closedir(dir_ptr);} } 5 dostat()函数 使用stat()函数通过文件或文件夹的名称获得保存了该文件信息的stat结构体将该结构体传递给show_file_info()函数 void dostat(char *filename) {struct stat info;/* 使用stat()函数通过文件名获得stat结构体info */if(stat(filename,info) -1){perror(filename);}else{/* 将stat结构体传递给show_file_info()函数 */show_file_info(filename,info);} } 6 show_file_info()函数 将stat结构体中的各项参数分别解析并输出到标准输出 void show_file_info(char *filename,struct stat *info_p) {/* 各解析函数声明 */char *uid_to_name(),*ctime(),*gid_to_name(),*filemode();void mode_to_letters();char modestr[11];/* 解析并输出文件的mode信息 */mode_to_letters(info_p-st_mode,modestr);printf(%s,modestr);/* 文件连接数 */printf(%4d,(int)info_p-st_nlink);/* 通过uid获得对应的用户名 */printf(%-8s,uid_to_name(info_p-st_uid));/* 通过gid获得对应的组名 */printf(%-8s,gid_to_name(info_p-st_gid));/* 文件大小 */printf(%8ld,(long)info_p-st_size);/* 最近一次修改时间 */printf(%.12s,4ctime(info_p-st_mtime));/* 文件名 */printf(%s\n,filename); }  7 mode_to_letters()函数 将传递进来的mode参数解析成string格式 void mode_to_letters(int mode,char str[]) {strcpy(str,----------);if(S_ISDIR(mode)) str[0] d;if(S_ISCHR(mode)) str[0] c;if(S_ISBLK(mode)) str[0] b;if(modeS_IRUSR) str[1] r;if(modeS_IWUSR) str[2] w;if(modeS_IXUSR) str[3] x;if(modeS_IRGRP) str[4] r;if(modeS_IWGRP) str[5] w;if(modeS_IXGRP) str[6] x;if(modeS_IROTH) str[7] r;if(modeS_IWOTH) str[8] w;if(modeS_IXOTH) str[9] x; } 其中S_ISDIR、S_ISCHR、S_ISBLK等是宏定义如下所示 #define S_ISFIFO(m) (((m)(0170000)) (0010000)) #define S_ISDIR(m) (((m)(0170000)) (0040000)) #define S_ISCHR(m) (((m)(0170000)) (0020000)) #define S_ISBLK(m) (((m)(0170000)) (0060000)) #define S_ISREG(m) (((m)(0170000)) (0100000)) 8 uid_to_name()函数 通过用户的uid利用getpwuid()函数将uid转换为用户名 #includepwd.h char *uid_to_name(uid_t uid) {struct passwd *getpwuid(),*pw_ptr;static char numstr[10];if((pw_ptr getpwuid(uid))NULL){sprintf(numstr,%d,uid);return number;}else{return pw_ptr-pw_name;} } 9 gid_to_name()函数 通过用户的gid利用getgrgid()函数将gid转换为组名 #includegrp.h char *gid_to_name(gid_t gid) {struct group *getgrgid(),*grp_ptr;static char numstr[10];if((grp_ptr getgrgid(gid))NULL){sprintf(numstr,%d,gid);return numstr;}else{return grp_ptr-gr_name;} }   相关函数与结构体 1 stat()函数通过文件名获取文件信息并保存在stat结构体中头文件#include sys/stat.h  #include unistd.h函数原型 int stat(const char *file_name, struct stat *buf)参数    file_name 指向文件名的指针      buf 指向stat结构体的指针返回值   0 执行成功      -1 执行失败错误代码存于ermo中 2 stat结构体头文件#includesys/stat.hstruct stat{  mode_t st_mode; //文件对应的模式文件目录等  ino_t st_ino; //i-node节点号  dev_t st_dev; //设备号码  dev_t st_rdev; //特殊设备号码  nlink_t st_nlink; //文件的连接数  uid_t st_uid; //文件所有者  gid_t st_gid; //文件所有者对应的组  off_t st_size; //普通文件对应的文件字节数  time_t st_atime; //文件最后被访问的时间  time_t st_mtime; //文件内容最后被修改的时间  time_t st_ctime; //文件状态属性改变时间  blksize_t st_blksize; //文件内容对应的块大小  blkcnt_t st_blocks; //文件内容对应的块数量} 3 ctime()函数把日期和时间转换为字符串头文件#include cstdio  #include ctime函数原型 char *ctime(const time_t *time)参数    time time_t格式的时间返回值   char * 字符串格式的时间 4 getpwuid()函数通过用户的uid查找用户的相关信息并以passwd结构体返回其数据头文件#include sys/types.h  #include pwd.h函数原型 struct passwd *getpwuid(uid_t uid)参数    uid 用户的uid返回值   passwd结构体 uid对应的用户信息      空指针 出错 5 passwd结构体struct passwd{  char * pw_name; /* Username, POSIX.1 */  char * pw_passwd; /* Password */  __uid_t pw_uid; /* User ID, POSIX.1 */  __gid_t pw_gid; /* Group ID, POSIX.1 */  char * pw_gecos; /* Real Name or Comment field */  char * pw_dir; /* Home directory, POSIX.1 */  char * pw_shell; /* Shell Program, POSIX.1 */  char *pw_class;  time_t pw_change;  time_t pw_expire;} 6 getgrgid()函数通过gid找到该组的相关信息并以group结构体返回其信息头文件#includegrp.h  #includesys/types.h函数原型 strcut group * getgrgid(gid_t gid)参数    gid返回值   group结构体 正常      NULL 无数据或发生错误 7 group结构体struct group{  char *gr_name; /*组名称*/  char *gr_passwd; /* 组密码*/  gid_t gr_gid; /*组识别码*/  char **gr_mem; /*组成员账号*/}  转载于:https://www.cnblogs.com/cation/archive/2013/01/29/2875311.html
http://www.pierceye.com/news/578659/

相关文章:

  • 上饶网站建设推广四川城乡建设网网站
  • 网站logo怎么改服装手机商城网站建设
  • aspnet网站开发实例视频天津网站建设普斯泰
  • 玉溪网站建设设计心理医院网站优化服务商
  • 支付宝网站接口申请建湖做网站哪家最好
  • 网站的超级链接怎么做无法运行电脑wordpress
  • 网站建设企业网银e路通西宁做网站_君博相约
  • 陕西网站建设公司哪有大连网站建设
  • 东莞做网站 汇卓百度网盘官网登录入口
  • 网站建设哪谷歌浏览器安卓版下载
  • 中国建设银行上海市分行网站天津工程建设信息网站
  • 怎么做好网站开发、设计中国站长网站
  • 沈阳网站建设tlmh室内设计装修案例
  • 网站 linux 服务器配置长沙企业网站建设价格
  • 低价网站制作企业智慧团建官网登录口手机版
  • 临沂网站制作专业如何 做网站
  • 旅游景区网站开发的政策可行性天翼云电脑免费领取
  • 企业网站建设报价做网站要实名认证吗
  • 设计网站得多少钱ui设计师个人简历
  • 彩票网站建设基本流程wordpress上篇下篇代码
  • 一站式服务的优点无锡网站搜索优化
  • 怎么做地区网站烟台网站建设首推企汇互联见效付款
  • 杭州网站优化服务网站内容方案
  • 大气手机网站模板免费下载军事网站模板下载
  • 大兴德艺网站建设wordpress上传的gif图不会动
  • 三门峡住房和建设局网站房产主题wordpress
  • 网站改版 权重php做网站脑图
  • 交易网站建设需要学什么网店装修
  • 青岛市城市建设档案馆网站东莞网络推广优化排名
  • 成交型网站做网站优化的价格