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
петля. Это решило бы проблему.
Спасибо!