C语言的问题(改错)2.1

来源:百度知道 编辑:UC知道 时间:2024/06/04 04:28:17
题目:计算机字符串中子串出现的次数。请改正2个错误。
# include"string.h"
# include"stdio.h"
main()
{char strl[20],str2[20],*p1,*p2;
int sum=0;
printf("please input two strings\n");
scanf("%s%s",str1,str2);
p1=str1;p2=str2;
while(*p1!='\0')
{
if(*p1==*p2)
{while(*p1==*p2||*p2!='\0')
{p1++;
p2++;}
}
else
p2++;
if(*p2=='\0')
sum++;
p2=str2;
}
printf("%d\n",sum);
geteh();
}
geteh这个是印刷错误吧。..
strl【20】这个是笔误的样子。。。印刷出来1和l好像哦好像。。。说实话我也看不清楚,不知道是算错误还是自己看不清而已。。。难道除了else p2++;改为else p1++; 就没错了么?

第一个错误,定义时strl写错了,应该是1而不是l;
第二个错误,else p2++;改为else p1++;

geteh应该是笔误吧

while(*p1==*p2||*p2!='\0') 改为while(*p1==*p2&&*p2!='\0')
p1++,p2++的条件是*p1==*p2并且未到达p2的末尾

geteh(); 是getch吧
全部错了1
到处是!哪里有地址自动加的!

过了年就能帮你了