这个程序怎么回事?

来源:百度知道 编辑:UC知道 时间:2024/06/08 17:02:52
#include <iostream.h>
#include <string.h>
void main()
{
int n=0;
char *p,*r;
char *str="abcer adfer erer";
char *substr="er";
cout<<"n="<<n<<endl;
while(*str)
{
p=str;
r=substr;
while(*r)
{
if(*r==*p)
{
r++;
p++;
}
else break;
}
if(*r=='\0')
{
n++;
str++;
}
}
cout<<"n="<<n<<endl;
}

不知道为什么,运行后,只有上面的n=0显示出来,下面的n值根本就不显示,请高手指点~!

死循环!

#include <iostream.h>
#include <string.h>
void main()
{
int n=0;
char *p,*r;
char *str="abcer adfer erer";
char *substr="er";
cout<<"n="<<n<<endl;
while(*str)
{
p=str;
r=substr;
while(*r)
{
if(*r==*p)
{
r++;
p++;
}
else break;
}
if(*r=='\0')
{
n++;
str=p;//另外这里可以指向p,因为前边已经对比过了
}
str++;//当匹配不成功时也要向下一个字符移动,
//不然就一直呆在不成功的这个字符处,形成了死循环
}
cout<<"n="<<n<<endl;
}

不太懂,说明白点