#include <stdio.h>
#include <string.h>
int greater(int x, int y)
{
return (x > y)? 1 : 0;
}
int less(int x, int y)
{
return (x < y) ? 1 : 0;
}
void sort(char *a[], int argc, int (*p)(int, int))
{
int i, j;
char *tmp;
for(i = 1; i < argc; i++ )
{
for(j = 1; j < argc - i; j++)
{
/* if((strcmp(a[j], a[j + 1])) < 0)*/
if(p(*a[j], *a[j + 1]))
{
tmp = a[j];
a[j] = a[j+1];
a[j+1] = tmp;
}
}
}
}
void print(char *argv[], int argc)
{
int i;
for(i = 1; i < argc; i++)
{
printf("%s ", argv[i]);
}
}
int main(int argc, char *argv[])
{
int i = 0;
sort(argv, argc, less);
print(argv, argc);
printf("\n");
return 0;
}
知识点:
1:命令行参数 main( int argc, char *argv[])
argc:必须是整型变量,表示命令行中参数个数,文件名本身也算
argv:必须是指向字符串的指针数组
2:指针函数和函数指针
eg: int (*p)() 是函数指针,P是指向一个函数,该函数不含参数,返回值为int
int *P()是指针函数,P是一个函数,该函数没有参数,返回值为int型的指针