[英]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.