0

私は割り当てで働いていて、いくつかの奇妙なことを経験しています。私のプログラムには、for ループに分岐していないように見える while ループがあります。2 つの印刷ステートメントを配置しましたが、「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++;
        }       
    }  
}    

編集:問題が見つかりました。この OS では Netbeans が壊れているようです。

4

1 に答える 1

1

これは、この部分でまたはをstrstr(p,string_a)返すためです。p0

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

その結果index < 0、ループに入るのを防ぎます。

何が問題なのかを確認するには、このステートメントの直前と両方pを印刷する必要があります。string_a

于 2012-09-25T01:08:05.427 に答える