C语言问题,求大神解决,谢谢啦,我是小白,最好能够解释下原因

2024-12-03 04:24:00
推荐回答(3个)
回答1:

你的 两个指针变量 p1 和 p2 是 野指针 没有指向 str1和str2 改成如下即可:
#include
void main()
{
char str1[81],str2[81],*p1,*p2;
printf("please enter two string:\n");
gets(str1);
gets(str2);
p1 = str1;
p2 = str2;
while(*p1)
{
if(*p1==*p2)
{
p1++;
p2++;
}
if(*p1>*p2)
printf("larger is %s\n",str1);
if(*p1<*p2)
printf("larger is %s\n",str2);
}
if(*p1==*p2)
printf("the 2 string is equal\n");
}

刚才看错了以为是比较长度呢,原来是比较两个字符串的大小,现在这个和strcmp()的功能是一样的。

回答2:

#include
int main()
{
char str1[81],str2[81],*p1,*p2;
int m=0;
printf("please enter two string \n");
gets(str1);
gets(str2);
p1 = str1;
p2 = str2;
while(*p1)
{
if(*p1==*p2) continue;
if(*p1>*p2) {
printf("lager is %s\n",str1);
return 0;
}
else if(*p1<*p2)
{
printf("larger is %s\n",str2);
return 0;
}
p1++;
p2++;
}
printf("the 2 string is equal");
}

回答3:

p1、p2要先分别指向两个字符数组才能开始比较啊,在进入while循环前增加:
p1=str1;
p2=str2;