虽然循环不符合预期

时间:2012-09-25 00:52:10

标签: c linux ubuntu netbeans

我正在完成一项任务,并且正在经历一些奇怪的事情。我在我的程序中有这个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似乎在这个操作系统中被打破了。

1 个答案:

答案 0 :(得分:1)

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

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

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

您必须在此声明之前立即打印pstring_a以查看其中出现的问题。