0

Cプログラムを使用して、文字列内の部分文字列を再帰的に検索しようとしています。次のコードを書きました。私が直面している問題は、ptr値は正しい値を出力しますが(putswhileの最初に使用)、使用法ではその値は変更されないということです。以前の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 に答える