| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 487 人关注过本帖
标题:忽略大小的字符串比较
只看楼主 加入收藏
ll2309259010
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2013-4-12
结帖率:60%
收藏
已结贴  问题点数:20 回复次数:6 
忽略大小的字符串比较
#include<stdio.h>
#include<string.h>
int main()
{
 int MyStrCmp(char *pStr1,char *pStr2);
 char a1[81],a2[81];
 int t;
 gets(a1);
 gets(a2);
    t=MyStrCmp(a1,a2);
 if(t==1)printf(">");
 if(t==0)printf("=");
 if(t==-1)printf("<");
 printf("\n");
 return 0;
}
int MyStrCmp(char *pStr1,char *pStr2)
{
 int i;
 int t;
 char b1[81],b2[81];
 for(i=0;pStr1[i]!='\0';i++)
  if(pStr1[i]>='A'&&pStr1[i]<='Z')
  *(pStr1+i)=*(pStr1+i)+32;
 for(i=0;pStr2[i]!='\0';i++)
  if(pStr2[i]>='A'&&pStr2[i]<='Z')
  *(pStr2+i)=*(pStr2+i)+32;
        t=0;
  if(strlen(pStr1)>strlen(pStr2))t=1;
     if(strlen(pStr1)<strlen(pStr2))t=-1;
        if(strlen(pStr1)==strlen(pStr2))
  {
   for(i=0;i<strlen(pStr1);i++)
   {
    if(*(pStr1+i)>*(pStr2+i))
    {
     t=1;
                    break;
    }
    if(*(pStr1+i)<*(pStr2+i))
    {
     t=-1;
     break;
    }
    if(*(pStr1+i)==*(pStr2+i))
     continue;
   }
  }
 return (t);
}



 *(pStr1+i)=*(pStr1+i)+32;这一行是什么意思啊?不应该是*(pStr1[i])=*(pStr1[i])+32吗?
搜索更多相关主题的帖子: include return 字符串 
2013-05-07 23:08
helloUJS
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:168
专家分:731
注 册:2013-3-27
收藏
得分:0 
*(pStr1+i)=*(pStr1+i)+32;的含义是将pStr1[i]转换为小写字母
2013-05-07 23:16
ll2309259010
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2013-4-12
收藏
得分:0 
*(pStr1[i])=*(pStr1[i])+32;这样可以吗
2013-05-07 23:49
helloUJS
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:168
专家分:731
注 册:2013-3-27
收藏
得分:2 
回复 3楼 ll2309259010
*(pStr1[i])=*(pStr1[i])+32;这样写是错误的,这样写相当于:*(*(pStr1+i))=*(*(pStr1+i))+32;
2013-05-08 06:38
helloUJS
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:168
专家分:731
注 册:2013-3-27
收藏
得分:6 
int MyStrCmp(char *pStr1,char *pStr2)
{
  int i,t,m,n;
  for(i=0;pStr1[i]!='\0';i++)
     if(pStr1[i]>='A'&&pStr1[i]<='Z')
        pStr1[i]=pStr1[i]+32;
  for(i=0;pStr2[i]!='\0';i++)
     if(pStr2[i]>='A'&&pStr2[i]<='Z')
        pStr2[i]=pStr2[i]+32;
  return strcmp(pStr1,pStr2);
}
这个函数的一个比较简单的写法是利用strcpy函数,供参考
2013-05-08 06:54
helloUJS
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:168
专家分:731
注 册:2013-3-27
收藏
得分:6 
int MyStrCmp(char *s1,char *s2)
{
  int i;
  for(i=0;s1[i]!='\0';i++)    /*将s1的所有大写改为小写*/
     if(s1[i]>='A'&&s1[i]<='Z')
        s1[i]=s1[i]+32;
  for(i=0;s2[i]!='\0';i++)   /*将s2的所有大写改为小写*/
     if(s2[i]>='A'&&s2[i]<='Z')
        s2[i]=s2[i]+32;
  i=0;
  while(s1[i]!='\0' && s2[i]!='\0')
    {
       if(s1[i]>s2[i])   /*如果s1[i]>s2[i]说明s1>s2*/
            return 1;
       if(s1[i]<s2[i])   /*如果s1[i]<s2[i]说明s1<s2*/
            return -1;
       i++;
     }
  if(s1[i]!='\0')   /*如果s1[i]!='\0',说明s1比s2长,且s2是s1的一部分*/
     return 1;
  if(s2[i]!='\0')  /*如果s2[i]!='\0',说明s2比s1长,且s1是s2的一部分*/
     return -1;
  return 0;      /*如果这行到这里,必然有s1==s2*/
}
这是一个没有利用strcpy实现的函数,供参考
2013-05-08 07:12
ddtet
Rank: 4
等 级:业余侠客
帖 子:32
专家分:211
注 册:2013-5-4
收藏
得分:6 
*(pStr1+i)=*(pStr1+i)+32;

pStr1[i]=pStr1[i]+32;
的意義是一樣的…

[ ] 本身就帶有 指針的意思在裡面。
2013-05-08 08:11
快速回复:忽略大小的字符串比较
数据加载中...
 
   



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

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