我正在尝试使用C程序递归地搜索字符串中的子字符串。我写了下面这段代码。我面临的问题是,虽然ptr值打印正确的值(在while开头使用puts ),但usage的值没有改变!它使用之前的ptr值。我使用gdb发现了这一点。我想不出这是什么原因。请指导我解决这个问题。提前谢谢。
void main()
{
char buf[10]="hello",*ptr;
char findc[10]="lo";
int len,i,lenf,k,l,flag=0;
lenf=strlen(findc);
l=0,k=1;
ptr=strchr(buf,findc[l]);
while(ptr!=NULL)
{
puts(ptr);
l++;
for(i=l;i<(lenf);i++,k++)
{
if(ptr[k] != findc[i])
{
flag=1;
break;
}
}
if(flag==1)
{
l=0;k=1;
ptr=strchr((ptr+1),findc[l]);
if(ptr==NULL)
{
puts("String not found");
break;
}
}
else
{
puts("String found");
break;
}
}
}发布于 2013-02-18 12:54:18
这是一个非常简单的错误!
我们必须在while循环开始时重置flag变量。这就解决了这个问题。
谢谢!
https://stackoverflow.com/questions/14737797
复制相似问题