int struchk(char s1[],char s2[])
{int i;
char c1,c2;
for(i=0;;i++)
{
c1=s1[i];
c2=s2[i];
if(c1>='A'&&c1<='Z')
c1=c1-'A'+'a';
if(c2>='A'&&c2<='Z')
c2=c2-'A'+'a';
if(c1!=c2||c1=='\0'+'a'||c2=='\0')
break;
}
if(c1=='\0'||c2=='\0')
return 0;
else if(c1>c2)
return 1;
else
return -1;
}
这个是一个函数,我就是看不懂上面一段为什么要+'a'
{int i;
char c1,c2;
for(i=0;;i++)
{
c1=s1[i];
c2=s2[i];
if(c1>='A'&&c1<='Z')
c1=c1-'A'+'a';
if(c2>='A'&&c2<='Z')
c2=c2-'A'+'a';
if(c1!=c2||c1=='\0'+'a'||c2=='\0')
break;
}
if(c1=='\0'||c2=='\0')
return 0;
else if(c1>c2)
return 1;
else
return -1;
}
这个是一个函数,我就是看不懂上面一段为什么要+'a'
c1=c1-'A'+'a';这一段的意思是如果c1是一个大写字母,就把它转化成为相应的小写字母
if(c1!=c2||c1=='\0'+'a'||c2=='\0')
中的+'a',呵呵
up
if(c1!=c2||c1=='\0'||c2=='\0')
判断循环结束的
"A"的ASCII值为 41H 即十进制65
"a"的ASCII值为 61H 即十进制97c1=c1-'A'+'a';
实际为: cl = cl-65+97; 即如果cl = 'A' cl = 65-65+97 = 97 = 'a';
如果cl = 'B' cl = 66-65+97 = 98 = 'b';
如果cl = 'C' cl = 67-65+97 = 99 = 'c';
以此类推。其实就是将大写形式转换成小写形式。
cl-'A',的到字符的偏移量,用这个偏移量+'a',就得到对应位置的小写形式。OK???
if(c1!=c2||c1=='\0'+'a'||c2=='\0')
中的+'a',呵呵
c1=c1-'A'+'a';显然是把大写换成小写啊。
up
if(c1!=c2||c1=='\0'||c2=='\0'),那句可能写得有问题