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

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

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

代码:

#include

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


以下为错误方法:

#include

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语言指针比较并转换字符串大小)