#include <stdio.h>
void print_str_array(char** str_array){
while(*str_array)
printf("%s\t", *str_array++);
printf("\n");
}
void str_copy(char** s_d, char ** s_s){
while(*s_s){
*s_d++ = *s_s++;
}
*s_d = NULL;
}
void swap(char** s0, char** s1) {
char* tmp[1];
*tmp = *s1;
*s1 = *s0;
*s0 = *tmp;
}
int str_size(char* str) {
int len = 0;
while(*str++) {
len++;
}
return len;
}
int str_array_size(char** str_array){
int len = 0;
while(*str_array++)
len++;
return len;
}
void str_sort(char** str_array){
char** tmp = str_array + 1;
char** mytmp = str_array;
int i;
for(i = 0; i < str_array_size(mytmp) - 1; mytmp++) {
tmp = mytmp + 1;
while(*tmp) {
if(str_size(*mytmp) > str_size(*tmp))
swap(mytmp, tmp);
tmp++;
}
}
}
int main(void){
char* str_array[] = {"00001", "002", "03", "88888888", "aa", "b", "aee",
"@@@@@@@@@@@@@", NULL};
print_str_array(str_array);
// char* str_array1[0xff];
// str_copy(str_array1, str_array);
// print_str_array(str_array1);
// swap(str_array1, str_array1 + 1);
// print_str_array(str_array1);
// printf("%d\n", str_size(*str_array1));
str_sort(str_array);
print_str_array(str_array);
// printf("%d\n", str_array_size(str_array));
}
//希望能够正确运行
/*
C:\Users\Administrator>gcc -o test201.exe test201.c
C:\Users\Administrator>test201
00001 002 03 88888888 aa b
b aa 03 002 00001 88888888
*/