Linux基础—ls功能的简单实现

发表于:2014-10-13 10:42

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:(@_@)ゞ    来源:51Testing软件测试网采编

  最后,我们在编写一个简单的show()函数,来显示各个文件的信息。
  show函数实现如下:
1 void show(char name[][CNT], int cnt)
2 {
3     int index;
4     char mode[10];
5     char *str;
6     struct stat buf;
7     for(index = 0; index < cnt; index ++)
8     {
9         memset(&buf, 0, sizeof(buf));
10         if(stat(name[index], &buf) == -1)
11         {
12             printf("stat error!!\n");
13             exit(1);
14         }
15         mode_to_char(buf.st_mode, mode);
16         str = ctime(&buf.st_atime);
17         str = time_change(str);
18         int i;
19         for(i = strlen(name[index]) - 1; name[index][i] != '/'; i --);
20         i++;
21         printf("%10s.%2d %5s %5s%5d%13s %s\n", mode, buf.st_nlink, getpwuid(buf.st_uid)->pw_name, getgrgid(buf.st_gid)->gr_name, buf.st_size, str, name[index] + i);
22     }
23 }
  这里需要注意:
  getpwuid()返回的不是我们要的用户名,我们需要的是该结构体中的一个变量——pw_name,同样的getgrid()也应做相应的转换。
  测试代码如下:
1 #include "head.h"
2 int main(int argc, char *argv[])
3 {
4     DIR *fp;
5     char name[CNT][CNT];
6     int cnt;
7     fp = opendir(argv[1]);
8     if(fp == NULL)
9     {
10         printf("opendir error!!\n");
11         exit(1);
12     }
13     cnt = file_name(fp, argv[1], name);
14     str_sort(name, cnt);
15     show(name, cnt);
16     return 0;
17 }
33/3<123
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号