利用指针进行字符串大小比较出现的问题
#include <stdio.h>void sort(char *str1,char *str2,char *str3);//字符串大小比较的函数
void copyarray(char *strsrc,char* strdet);//字符串赋值的函数
int main()
{
char str1[255],str2[255],str3[255];
printf("please input string:");
scanf("%s%s%s",str1,str2,str3);
sort(str1,str2,str3);//调用字符串大小比较的函数
printf("min:%s\nmiddle:%s\nmax:%s\n",str1,str2,str3);//将字符串按从小到大输出
return 0;
}
void sort(char *str1,char *str2,char *str3) //字符串大小比较函数的函数体,利用指针来进行对字符数组的接收
{
int i=0;
char *str4,*str5,*str6;//三个字符指针,存放字符串首地址,str4存放最大的,str6存放最小的,str5为中间的
for(i=0;;i++)//for循环,从字符串的第一个字符开始比较
{
if(str1[i]>str2[i])
if(str2[i]>str3[i])
{
str4=str1;
str5=str2;
str6=str3;
break;
}
else if(str1[i]>str3[i])
{
str4=str1;
str5=str3;
str6=str2;
break;
}
else
{
str4=str3;
str5=str1;
str6=str2;
break;
}
else if(str1[i]>str3[i])
{
str4=str2;
str5=str1;
str6=str3;
break;
}
else if(str2[i]>str3[i])
{
str4=str2;
str5=str3;
str6=str1;
break;
}
else
{
str4=str3;
str5=str2;
str6=str1;
break;
}
}
copyarray(str6,str1);//调用字符串复制函数将最小的字符串拷贝给str1;
copyarray(str5,str2);//将中间的字符串拷贝给str2;
copyarray(str4,str3);//将最大的字符串拷贝给str3;
printf("min:%s\nmiddle:%s\nmax:%s\n",str6,str5,str4);
}
void copyarray(char *strsrc,char *strdst)//复制函数,strsrc为要复制的,strdst为接收复制内容的;
{
int i=0;
for(i=0;;i++)
{
strdst[i]=strsrc[i];
if(strsrc[i]=='\0')//到达字符串最后拷贝结束
{
break;
}
}
我的问题是:
分别输入:ooo aaa bbb ,那么经过比较之后str4="ooo",str5="bbb",str6="aaa"然而当跳出那个比较大小的循环后,str4=str6="aaa"了;
请问如何解决该问题?谢谢你们