跟我预想的不一样 我不明白为啥我输个等长的并不相等的字符串他为啥会一直循环 而不会跳出;想不明白求解答
#include<stdio.h>
int main ()
{
char str1[50],str2[50];
int res=0;
printf("字符串1\n");
gets(str1);
printf("字符串2\n");
gets(str2);
char *p1=str1,*p2=str2;//p1 p2 指向str1 和str2两个字符串的第一个字符
while(*p1!='\0'||*p2!='\0')
{
if(*p1>*p2) //如果p1指向当前字符大于p2所指向的字符 若p1指向b p2指向a此时 b大于a
{
res=*p1-*p2;//结果等于b-a=1
break; //跳出循环
}
else if (*p2<*p1)
{
res=*p1-*p2;
break;
}
else//都不满足
{
p1++;
p2++; //判断下一字符
}
}
if(*p1=='\0'&&*p2=='\0')//若p1 和p2 都指向'\0'说明俩字符串等长且相等
{
printf("两字符串相等");
res=0;
}
else if(*p1=='\0'&&*p2!='\0')//若p1指向‘\0’而p2指向不是‘\0’ 说明str2长度大于str1且在p1指向/0的位置前
{ //两字符完全相等
res=-*p2;//res=0-p2指向的字符
}
else if(*p1!='\0'&&*p2=='\0')
res =*p1;
printf("\n\n%d",res);
return 0;
}