在文件上附加操作似乎不起作用

时间:2014-10-29 21:06:46

标签: c fopen fclose file-pointer

如果某个条件为真,我想将数据追加到文件中,否则打开一个新文件并继续写入该文件......这会循环播放。
这就是我在做的事情:

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”,这会使代码变得更加混乱,而且我不确定这是否会起作用。

任何帮助表示赞赏!谢谢!

1 个答案:

答案 0 :(得分: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;您可以使用原始伪代码命中四种可能性中的任何一种:

  1. 既不写入打开文件也不打开新文件
  2. 仅写入打开的文件
  3. 仅打开新文件
  4. 写入打开的文件,然后打开新文件