通过命令行参数读取字符串,使用指针调用函数实现冒泡排序

#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型的指针

猜你喜欢

转载自blog.csdn.net/weixin_42720316/article/details/81254128
今日推荐