简单ls命令编写(第一版)

ls命令

ls简介

a21e9e9118671357a6f4f4c5e600204.png

相关函数

15053cc15e7fdcd30e347b3b3d2b13d.png

源码

#include 
#include 
#include 
void do_ls(char []);
main(int ac , char *av[])
{
    int a=0;
    if(ac==1)
        do_ls(".");//如果后面没有参数,默认当前目录
    else
        while(--ac){//计数器减1
            printf("%d",a);
            printf("%s:\n",* ++av);//输出将要遍历的目录, * ++av 先加再用,    
            do_ls(* av); //调用函数
            a++;
        }
}

void do_ls(char dirname[])//输入目录,输出这个目录下的文件
{
    DIR * dir_ptr;//文件
    struct dirent *direntp;//每一个文件都是一个dirent
    
    //opendir,打开目录
    if((dir_ptr = opendir(dirname)) == NULL ) //如果dir_ptr为空
        fprintf(stderr,"ls1:cannot open %s\n",dirname);
    else
    {
        //readdir 读取保存这个文件的dirent,读取后指针下移,下次读取就是下一个文件
        while((direntp = readdir(dir_ptr))!=NULL)
            printf("%s\n",direntp->d_name);
        close(dir_ptr);
    }
}

保存文件的结构体:

51439c0588f53e82b6af7e0429a387a.png

你可能感兴趣的:(简单ls命令编写(第一版))