题目:
输入一串文件名字,排序后格式化输出
思路:
排序后格式化输出
方案:
排序后格式化输出
代码:
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 5 #define MAX 100 6 #define NAME_LEN 60 7 8 void SortFile(char **file_name,int n); 9 int comp(const void *a,const void *b); 10 11 int main() 12 { 13 int n,i,len; 14 char **file_name=(char **)malloc(sizeof(char *)*MAX); 15 for(i=0;i<=MAX-1;++i) 16 file_name[i]=(char *)malloc(NAME_LEN); 17 18 while(scanf("%d",&n)!=EOF) 19 { 20 for(i=0;i<=n-1;++i) 21 { 22 memset(file_name[i],0,NAME_LEN); 23 gets(file_name[i]); 24 if(strlen(file_name[i])==0) 25 --i; 26 } 27 28 SortFile(file_name,n); 29 } 30 return 0; 31 } 32 33 void SortFile(char **file_name,int n) 34 { 35 qsort(file_name,n,sizeof(char *),comp); 36 37 int i,max_len=strlen(file_name[0]); 38 for(i=1;i<=n-1;++i) 39 if(strlen(file_name[i])>max_len) 40 max_len=strlen(file_name[i]); 41 int c_cnt=62/(max_len+2); 42 int r_cnt; 43 if(n%c_cnt==0) 44 r_cnt=n/c_cnt; 45 else 46 r_cnt=n/c_cnt+1; 47 48 printf("------------------------------------------------------------\n"); 49 int r_cur,c_cur; 50 for(r_cur=0;r_cur<=r_cnt-1;++r_cur) 51 { 52 for(c_cur=0;c_cur<=c_cnt-1;++c_cur) 53 if(r_cnt*c_cur+r_cur<=n-1) 54 { 55 printf("%s",file_name[r_cnt*c_cur+r_cur]); 56 if(r_cnt*(c_cur+1)+r_cur<=n-1) 57 for(i=strlen(file_name[r_cnt*c_cur+r_cur])-1;i<=max_len;++i) 58 printf(" "); 59 } 60 61 printf("\n"); 62 } 63 } 64 65 int comp(const void *a,const void *b) 66 { 67 return strcmp(*(const char **)a,*(const char **)b); 68 }
备注:
pe一生黑。懒得管了,没啥技术含量,纠结于pe没用,pass。
练习场hit1011:UNIX ls(有的二货罗马也用不着去debug了),布布扣,bubuko.com
练习场hit1011:UNIX ls(有的二货罗马也用不着去debug了)
原文:http://www.cnblogs.com/keepcalmandcarryon/p/3592633.html