ls命令
ls簡(jiǎn)介
a21e9e9118671357a6f4f4c5e600204.png
相關(guān)函數(shù)
15053cc15e7fdcd30e347b3b3d2b13d.png
源碼
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
void do_ls(char []);
main(int ac , char *av[])
{
int a=0;
if(ac==1)
do_ls(".");//如果后面沒有參數(shù)螃宙,默認(rèn)當(dāng)前目錄
else
while(--ac){//計(jì)數(shù)器減1
printf("%d",a);
printf("%s:\n",* ++av);//輸出將要遍歷的目錄砰嘁, * ++av 先加再用台谢,
do_ls(* av); //調(diào)用函數(shù)
a++;
}
}
void do_ls(char dirname[])//輸入目錄,輸出這個(gè)目錄下的文件
{
DIR * dir_ptr;//文件
struct dirent *direntp;//每一個(gè)文件都是一個(gè)dirent
//opendir,打開目錄
if((dir_ptr = opendir(dirname)) == NULL ) //如果dir_ptr為空
fprintf(stderr,"ls1:cannot open %s\n",dirname);
else
{
//readdir 讀取保存這個(gè)文件的dirent抓狭,讀取后指針下移习贫,下次讀取就是下一個(gè)文件
while((direntp = readdir(dir_ptr))!=NULL)
printf("%s\n",direntp->d_name);
close(dir_ptr);
}
}
保存文件的結(jié)構(gòu)體:
51439c0588f53e82b6af7e0429a387a.png