C: значение указателя strchr не изменяется

Я пытаюсь рекурсивно искать подстроку в строке, используя программу C. Я написал следующий кусок кода. Проблема, с которой я сталкиваюсь, заключается в том, что ptr значение, хотя оно печатает правильное значение (используя 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 ответ

Решение

Это была очень простая ошибка!

Придется сбросить flag переменная в начале while петля. Это решило бы проблему.

Спасибо!

Другие вопросы по тегам