美文网首页C语言
C语言指针比较并转换字符串大小

C语言指针比较并转换字符串大小

作者: 你让我写个名字啊 | 来源:发表于2019-12-21 14:53 被阅读0次

    思路:用strcmp函数两两比较,若是>0,就调用函数

    函数:将两个字符串用strcpy函数交换(要用三次)

    代码:

    #include<stdio.h>

    void change(char *i,char *j)//交换函数,传递指针

    {

    char arr[100] = {'\0'};//设置一个空数组

    char *temp = arr;//指针指向空数组,免得指针乱指

    strcpy(temp,i);//i将指向的地址放到temp中

    strcpy(i,j);                                //下同

    strcpy(j,temp);

    }

    int main()

    {

    char a[100],b[100],c[100];//三个字符型数组

    char *i,*j,*k;//三个指针

    printf("请输入三个字符串:\n");

    gets(a);

    gets(b);

    gets(c);

    i = a;//i指向数组a

    j = b;//j指向数组b

    k = c;//k指向数组c

    if(strcmp(i,j)>0){//如果大于零

    change(i,j);//调用函数

    }                          //下同

    if(strcmp(i,k)>0){

    change(i,k);

    }

    if(strcmp(j,k)>0){

    change(j,k);

    }

    printf("\n");

    printf("%s<%s<%s\n",a,b,c);//输出三个字符串的比较

    return 0;

    }

    输出结果:

    请输入三个字符串:

    zxy

    ijk

    abc

    abc<ijk<zxy

    以下为错误方法:

    #include<stdio.h>

    void change(char *i,char *j,char *k)//排序函数,传递指针,传送a,b,c的地址

    {

    char *temp;//空指针变量

    if(*i > *j){

    *temp = *i;//*i将指向的地址放到temp中

    *i = *j;

    *j = *temp;

    }

    else if(*j > *k){

    *temp = *j;

    *j = *k;

    *k = *temp;

    }

    else if(*i > *k){

    *temp = *i;

    *i = *k;

    *k = *temp;

    }

    }

    int main()

    {

    char a[100],b[100],c[100];//三个整数

    char *i,*j,*k;//三个指针

    printf("请输入三个字符串:\n");

    gets(a);

    gets(b);

    gets(c);

    i = a;//i指向数组a

    j = b;//j指向数组b

    k = c;//k指向数组c

    change(i,j,k);//调用排序函数,传递指针

    printf("\n");

    printf("%s<%s<%s\n",a,b,c);

    return 0;

    }

    这样的函数只能将该数组的首元素传递进行交换,指针指向的是给数组的首地址,若是想要继续交换估计要设置一个循环然后p++;不过这样很麻烦.....交换的事让函数做好了

    相关文章

      网友评论

        本文标题:C语言指针比较并转换字符串大小

        本文链接:https://www.haomeiwen.com/subject/ctqgnctx.html