如果某个条件为真,我想将数据追加到文件中,否则打开一个新文件并继续写入该文件......这会循环播放。
这就是我在做的事情:
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”,这会使代码变得更加混乱,而且我不确定这是否会起作用。
任何帮助表示赞赏!谢谢!
答案 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;您可以使用原始伪代码命中四种可能性中的任何一种: