字符串比较
问题描述:一般我们用strcmp可比较两个字符串的大小,比较方法为对两个字符串从前往后逐个字符相比较(按ASCII码值大小比较),直到出现不同的字符或遇到‘\0’为止。如果全部字符都相同,则认为相同;如果出现不相同的字符,则以第一个不相同的字符的比较结果为准。但在有些时候,我们比较字符串的大小时,希望忽略字母的大小,例如“Hello”和“hello”,在忽略字母大小写时是相等的。请写一个程序,实现对两个字符串进行忽略字母大小写的大小比较。
要求用一个自定义函数实现忽略大小写的比较过程,用函数的返回值表示比较的结果:若返回值为0表示两个字符串相等;若返回值为1表示第一个字符串比第二个字符串大;若返回值为-1表示第一个字符串比第二个字符串小。
函数定义为:int MyStrCmp(char *pStr1,char *pStr2)
#include<stdio.h>
#include<string.h>
int MyStrCmp(char *pStr1,char *pStr2);
int main()
{
int n;
char a[500],b[500];
gets(a);
gets(b);
n=MyStrCmp(a,b);
if(n==1)
printf(">");
if(n==0)
printf("=");
if(n==-1)
printf("<");
printf("\n");
return 0;
}
int MyStrCmp(char *pStr1,char *pstr2)
{
int i,t;
char c[5000],d[500];
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);
}
谁能帮我改一些这个程序啊。真的很苦恼啊,我改不出来。有点长,辛苦了,谢谢!