gpt4 book ai didi

c - 对文件的追加操作似乎不起作用

转载 作者:行者123 更新时间:2023-11-30 17:26:48 26 4
gpt4 key购买 nike

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

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");
}
}
}

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

  1. 既不写入打开的文件,也不打开新文件
  2. 仅写入打开的文件
  3. 仅打开新文件
  4. 写入打开的文件,并打开一个新文件

关于c - 对文件的追加操作似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26640684/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com