| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5568 人关注过本帖
标题:利用指针进行字符串大小比较出现的问题
取消只看楼主 加入收藏
q510578
Rank: 2
等 级:论坛游民
帖 子:86
专家分:30
注 册:2012-2-29
结帖率:92.31%
收藏
已结贴  问题点数:40 回复次数:3 
利用指针进行字符串大小比较出现的问题
#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"了;


    请问如何解决该问题?谢谢你们
搜索更多相关主题的帖子: 字符串 please include void 
2012-10-31 16:26
q510578
Rank: 2
等 级:论坛游民
帖 子:86
专家分:30
注 册:2012-2-29
收藏
得分:0 
回复 2楼 一个孩子
当首字母相等时就开始比较第二个字母,第二个字母相等时就比较第三个字母。

for循环会做这些的啊

与你我希望相处的快乐,你有不快可以向我发泄。
2012-10-31 18:32
q510578
Rank: 2
等 级:论坛游民
帖 子:86
专家分:30
注 册:2012-2-29
收藏
得分:0 
回复 6楼 爱闹的娃
好的收到

与你我希望相处的快乐,你有不快可以向我发泄。
2012-11-07 20:58
q510578
Rank: 2
等 级:论坛游民
帖 子:86
专家分:30
注 册:2012-2-29
收藏
得分:0 
回复 7楼 zxd543
老师不让用

与你我希望相处的快乐,你有不快可以向我发泄。
2012-11-07 20:59
快速回复:利用指针进行字符串大小比较出现的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012503 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved