簡體   English   中英

C:strchr指針值不變

[英]C : strchr pointer value doesn't change

我正在嘗試使用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;
      }
   }
}

這是一個非常簡單的錯誤!

我們必須在while循環的開頭重置flag變量。 這樣可以解決問題。

謝謝!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM