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”条件内
2. 另一种方法是使用更多的“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");
        }             
    }
}

请注意,您的问题是如果条件为真,则附加到文件,否则打开另一个文件。您的伪代码检查要写入的条件,然后检查另一个打开新文件的条件。这不会为您提供您正在寻找的 if/else;您可以使用原始伪代码实现四种可能性中的任何一种:

  1. 既不写入打开的文件也不打开新文件
  2. 仅写入打开的文件
  3. 只打开一个新文件
  4. 写入打开的文件,并打开一个新文件
于 2014-10-29T21:49:38.760 回答