0

我正在执行一项任务,并且遇到了一些奇怪的事情。我的程序中有这个 while 循环,它似乎没有分支到 for 循环中。我放置了两个打印语句,只有“1”一遍又一遍地打印。请注意,这只发生在我从 linux 终端编译和运行时。现在看起来很奇怪的是,如果我在 Netbeans 中运行完全相同的代码(while 循环加上其他所有代码),它似乎可以编译并按预期运行。任何人都知道可能出了什么问题。这是代码。我感谢您的帮助。

while(strstr(p,string_a)!= NULL)
{
    p = trailerp + pholderp; 
    long int index =  strstr(p,string_a) - (p+1); // -1 where it hits 
    printf("1");
    for(  i = 0; i <= index; i++)
    {
        printf("2");
        p2[trailerp2] = pholderp[trailerp];
        trailerp++;
        trailerp2++;
        if(i == index)
        {  
            int j;
            for(j=0; j <= lenb-1; j++)            // insert the new string
            {
                p2[trailerp2] = string_b[j];
                trailerp2++;
            }
            trailerp++;
        }       
    }  
}    

编辑:我发现了问题。Netbeans 似乎在这个操作系统中被破坏了。

4

1 回答 1

1

这是因为在此部分中strstr(p,string_a)返回p或返回:0

long int index =  strstr(p,string_a) - (p+1); // -1 where it hits 

这导致index < 0并防止进入循环。

您必须在此声明之前立即打印两者pstring_a以查看那里出了什么问题。

于 2012-09-25T01:08:05.427 回答