指针写字符比较c语言,利用指针进行字符串大小比较出现的问题

void sort(char *str1,char *str2,char *str3),在你的这个函数中,假如你输入的是ooo aaa bbb

你经过比较转换后,其中指针str1和str4都指向了ooo存储位置的首地址,同样的str2与str6指向了aaa

的首地址,str3和str5指向了bbb的首地址,因此你在进行复制的时候在str1中写入aaa后,原来存入的ooo就被覆盖了,因此输出不了ooo

你应该直接在void sort(char *str1,char *str2,char *str3)中输出,如下

#include

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;

}

}

}

printf("min:%s\nmiddle:%s\nmax:%s\n",str6,str5,str4);

str1=str6;

str2=str5;

str3=str4;

printf("min:%s\nmiddle:%s\nmax:%s\n",str1,str2,str3);//将字符串按从小到大输出

//copyarray(str6,str1);//调用字符串复制函数将最小的字符串拷贝给str1;

// copyarray(str5,str2);//将中间的字符串拷贝给str2;

// copyarray(str4,str3);//将最大的字符串拷贝给str3;

}

/*void copyarray(char *strsrc,char *strdst)//复制函数,strsrc为要复制的,strdst为接收复制内容的;

{

int i=0;

for(i=0;;i++)

{

strdst[i]=strsrc[i];

if(strsrc[i]=='\0')//到达字符串最后拷贝结束

{

break;

}

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值