繁体   English   中英

在文件上附加操作似乎无效

[英]Append operation on file doesn't seem to be working

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

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”,这会使代码更混乱,但我不确定这是否行得通。

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

我不在工作,现在无法编译任何内容,但可以尝试以下方法

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. 写入打开的文件,然后打开一个新文件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM