0

特定の条件が真の場合はファイルにデータを追加したい、そうでない場合は新しいファイルを開いてそのファイルに書き込みを続ける...これはループで続きます。
これは私がやっていることです:

FILE* ptr
firstrun=1
***some code***
WHILE (condition)
{
    if(!condition1 && !condition 2)
        something
    else if(condition1 || condition 2)
    {
        write data to file
        if(firstrun)
            FILE* ptr
            fopen a file
            firstrun=0

        ***some code***
        if condition1
            append data to previously opened file
        if condition2
            fclose
            FILE* ptr
            fopen another new file
    }
}

コード全体が正しく動作していないように見えますが、他の部分は正しく動作しているようです。作成された最初のファイルは答えと一致しますが、次のファイルはどれも一致しません。また、どれだけのデータが繰り返されているかわかりませんが、さらに多くのファイルを作成しています。
私がここで行ったことが正しいかどうか誰か教えてもらえますか? コードは膨大なので掲載しません。

他のいくつかのケース:
1. FILE* ptr を先頭で宣言しないと、他の宣言が「if」条件内にあるため、コンパイルされません
。コードが乱雑になり、それが機能するかどうかもわかりません。

どんな助けでも大歓迎です!ありがとう!

4

1 に答える 1

0

私は仕事をしていないので、今は何もコンパイルできませんが、次の行に沿って何かを試してください

FILE* ptr = NULL
firstrun = true;
while (condition)
{
    if((false == condition1) && (false == condition 2))
    {
        ...
    }
    else    /* Your second condition logic is not needed as written */
    {
        if(true == firstrun)
        {
            ptr = fopen("/some/file/name", "w");
            firstrun = false;
        }

        if (true == condition1)
        {
            fwrite(ptr, ..., ..., ...);
        }
        else
        {
            fclose(ptr);
            ptr = fopen("/some/other/file/name", "w");
        }             
    }
}

あなたの質問は、条件が真の場合はファイルに追加し、ELSEは別のファイルを開くと言っていることに注意してください。擬似コードは、書き込む条件をチェックしてから、新しいファイルを開く別の条件をチェックします。これでは、探している if/else が得られません。元の疑似コードを使用して、次の 4 つの可能性のいずれかをヒットできます。

  1. 開いているファイルに書き込むことも、新しいファイルを開くこともしない
  2. 開いているファイルのみに書き込む
  3. 新しいファイルのみを開く
  4. 開いているファイルに書き込み、かつ新しいファイルを開く
于 2014-10-29T21:49:38.760 に答える