#include<stdio.h>
#include<sys/types.h>
#include<dirent.h>
#include<string.h>
#include<malloc.h>
#define max 99
int sort_function(char *a,char *b)
{
return(strcmp(a,b));
}
void qsort(char *a[],int low,int high)
{
int i=low,j=high;
char *temp=a[low];
while(i<j)
{
while(i<j&&sort_function(temp,a[j])<=0)j--;//在数组的右端扫描
if(i<j){a[i]=a[j];i++;}
while(i<j&&sort_function(a[i],temp)<0)i++;//在数组左端扫描
if(i<j){a[j]=a[i];j--;}
}
a[i]=temp;
if(low<i) qsort(a,low,i-1);
if(i<high) qsort(a,j+1,high);
}
void do_ls(char *dirname)
{
DIR *dir_ptr,*dir_ptr1;
struct dirent *direntp,*direntp1;
int count = 0;
char *a[max],*p;
if((dir_ptr=opendir(dirname))==NULL)
fprintf(stderr,"ls1:cannot open %s\n",dirname);
else
{
while((direntp=readdir(dir_ptr))!=NULL)
{++count;
p=direntp->d_name;
a[count-1]=p;
}
qsort(a,0,count-1);
for(int i=0;i<count;i++)
{
printf("%s\n",a[i]);
}
closedir(dir_ptr);
}
}
int main(int ac,char *av[])
{
char a[]={"."};
if(ac==1)
do_ls(a);
else
while(--ac)
{
do_ls(*av);
}
}
该测试程序与源程序的不同点是会把隐藏文件也输出
#include<sys/types.h>
#include<dirent.h>
#include<string.h>
#include<malloc.h>
#define max 99
int sort_function(char *a,char *b)
{
return(strcmp(a,b));
}
void qsort(char *a[],int low,int high)
{
int i=low,j=high;
char *temp=a[low];
while(i<j)
{
while(i<j&&sort_function(temp,a[j])<=0)j--;//在数组的右端扫描
if(i<j){a[i]=a[j];i++;}
while(i<j&&sort_function(a[i],temp)<0)i++;//在数组左端扫描
if(i<j){a[j]=a[i];j--;}
}
a[i]=temp;
if(low<i) qsort(a,low,i-1);
if(i<high) qsort(a,j+1,high);
}
void do_ls(char *dirname)
{
DIR *dir_ptr,*dir_ptr1;
struct dirent *direntp,*direntp1;
int count = 0;
char *a[max],*p;
if((dir_ptr=opendir(dirname))==NULL)
fprintf(stderr,"ls1:cannot open %s\n",dirname);
else
{
while((direntp=readdir(dir_ptr))!=NULL)
{++count;
p=direntp->d_name;
a[count-1]=p;
}
qsort(a,0,count-1);
for(int i=0;i<count;i++)
{
printf("%s\n",a[i]);
}
closedir(dir_ptr);
}
}
int main(int ac,char *av[])
{
char a[]={"."};
if(ac==1)
do_ls(a);
else
while(--ac)
{
do_ls(*av);
}
}
该测试程序与源程序的不同点是会把隐藏文件也输出