400 - Unix ls

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int cmp_string(const void*_a,const void*_b)
{
 char *a=(char*)_a;
 char *b=(char*)_b;
 return strcmp(a,b);
}
char file[110][70];
int main()
{
 int i,j,n,max,l,M,N;
 while(scanf("%d",&n)!=EOF)
 {
  getchar();
  max=0;
  for(i=0;i<n;i++)
  {
   gets(file[i]);
   l=strlen(file[i]);
   if(l>max)
    max=l;
  }
  printf("------------------------------------------------------------\n");
  qsort(file,n,sizeof(file[0]),cmp_string);
  M=62/(max+2);
  N=n/M;
  if(M*N!=n)
   N++;
  for(i=0;i<N;i++)
  {
   for(j=0;j<M;j++)
    if(N*j+i<n)
    {
     if(j!=M-1)
     {
      l=strlen(file[N*j+i]);
         printf("%s",file[N*j+i]);
         l=max+2-l;
         while(l-->0)
         printf(" ");
     }
     else
        printf("%s",file[N*j+i]);
    }
    
   printf("\n");
  }
 }
 return 0;
}

你可能感兴趣的:(unix)