C:strchr指针值不会改变

时间:2013-02-06 20:07:14

标签: c string substring strchr

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

1 个答案:

答案 0 :(得分:0)

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

我们必须在flag循环的开头重置while变量。这样可以解决问题。

谢谢!