0

我正在尝试使用 C 程序递归搜索字符串中的子字符串。我写了以下一段代码。我面临的问题是ptr,虽然它打印了正确的值(puts在 while 的开头使用),但使用它的值没有改变!它使用以前的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;
      }
   }
}
4

1 回答 1

0

这是一个非常简单的错误!

我们必须在循环flag开始时重置变量。while这将解决问题。

谢谢!

于 2013-02-18T04:54:18.000 回答