【问题请教】c语言两个字符串比较大小的问题,不使用strcmp函数
题目:将两个字符串s1,s2比较,如果s1>s2,输出一个正数;s1<s2输出一个负数,s1=s2,输出0。输出的正数或负数的绝对值应是比较的两个字符串的ASCII码的差值。例如‘A'与'C'的ASCII的差值为2,因此输出为‘-2’,不能使用strcmp函数。
程序代码:
int main() { char str1[80],str2[80]; int i=0,r; puts("input string1:"); gets(str1); puts("input string2:"); gets(str2); while((str1[i]==str2[i])&&(str1[i]!='\0')) //如果两个对应字符相等,且两字符串都没有结束,则i++,继续判断下一个字符; //否则,只要两个字符不相等,或者任意字符串已经结束,则不再进行下一个字符的判断。 { i++; } if(str1[i]=='\0'&&str2[i]=='\0') //如果同时结束,则相等 { r=0; } else { r=str1[i]-str2[i]; } printf("result:%d.\n",r); return 0; }
疑问:
while((str1[i]==str2[i])&&(str1[i]!='\0'))
我理解必须加上红色字体来判断字符串是否已经结束,但是这里为什么写的是str1,而不是str2呢?谢谢。