我正在完成一项任务,并且正在经历一些奇怪的事情。我在我的程序中有这个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似乎在这个操作系统中被打破了。
答案 0 :(得分:1)
这是因为strstr(p,string_a)
在此部分中返回p
或0
:
long int index = strstr(p,string_a) - (p+1); // -1 where it hits
导致index < 0
并阻止进入循环。
您必须在此声明之前立即打印p
和string_a
以查看其中出现的问题。