实现自己的ls命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/**********************************************************
  * Author        : oyjb
  * Email         : jbouyang@126.com
  * Last modified : 2015-09-13 22:37
  * Filename      : my_ls.c
  * Description   : copy right for oyjb
  * *******************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <errno.h>
#include <string.h>
 
#define MAX 1024
 
void  my_ls( char  *root);
 
int  main( int  argc,  char  *argv[])
{
     if (argc < 2)
     {
         printf ( "%s\n" , "wrong usage." );
         exit (1);
     }
 
     my_ls(argv[1]);
 
     exit (0);
}
 
void  my_ls( char  *root)
{
     DIR *dir;  // get directry's information,then get every file and directry
     struct  dirent *ptr;
     int  count;
 
     dir = opendir(root);  //open directory
     if  (dir == NULL)
     {
         perror ( "fail to open dir" );
         exit (1);
     }
 
     errno  = 0;
     while  ((ptr = readdir(dir)) != NULL)  //Sequential read every dirent
     {
         if  ( strcmp (ptr->d_name,  "." ) == 0 ||  strcmp (ptr->d_name, ".." ) == 0)
             continue ;
         printf ( "%s\t" , ptr->d_name);  //print file's name
 
         ++count;
         if  (count % 5 == 0)
             printf ( "\n" );
     }
 
     if  ( errno  != 0)
     {
         perror ( "fail to read dir" );
         exit (1);
     }
 
     closedir(dir);  //close dir
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值