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' 

解决方案 »

  1.   

    if(c1>='A'&&c1<='Z')
     c1=c1-'A'+'a';这一段的意思是如果c1是一个大写字母,就把它转化成为相应的小写字母
      

  2.   

    我说的是:
    if(c1!=c2||c1=='\0'+'a'||c2=='\0')
    中的+'a',呵呵
    up
      

  3.   

    应该是
    if(c1!=c2||c1=='\0'||c2=='\0')
    判断循环结束的
      

  4.   

    我也觉得应该是if(c1!=c2||c1=='\0'||c2=='\0')
      

  5.   

    我这里只讲搂住疑问的为什么+"a":其实他的操作是按ASCII码值进行操作的。
    "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???
      

  6.   

    我说的是:
    if(c1!=c2||c1=='\0'+'a'||c2=='\0')
    中的+'a',呵呵
    c1=c1-'A'+'a';显然是把大写换成小写啊。
    up
      

  7.   

    我觉得应该是应该是
    if(c1!=c2||c1=='\0'||c2=='\0'),那句可能写得有问题