gpt4 book ai didi

c - 在 if 语句中打开文件

转载 作者:太空宇宙 更新时间:2023-11-04 07:50:48 25 4
gpt4 key购买 nike

通过一点点知识,继承了自己维护的一些老C例程。我正在尝试将一些日志记录添加到我已经完成的例程之一中,但我希望能够使用 INI 文件中的设置打开和关闭日志记录。我也这样做了,但是我需要在关闭日志记录时停止创建日志文件。如果日志记录关闭,我希望它首先不要创建文件。

如果我启用日志记录,一切都会完美无缺。但是如果我禁用日志记录,它会创建文件,但不会向其中写入任何内容。

int LOG_ENABLED=FALSE;


... some code here to set LOG_ENABLED to either TRUE or FALSE...


char filename[50];
struct tm * timenow;
time_t now = time(NULL);
timenow = gmtime(&now);
strftime(filename, sizeof(filename), "/logfiles/program1/log/%y%m%d_%H%M%S.log", timenow);


if (LOG_ENABLED == TRUE)
{
FILE *output_file = fopen(filename, "a");
}

当我编译它时,它会产生很多错误,但如果我去掉“if”条件,它会编译正常,但仍然会产生一个零字节日志文件。

我很高兴 LOG_ENABLED 被声明为 OK,因为我在程序的其他地方使用它来控制写入日志的数据。

我错过了什么?

谢谢。

最佳答案

变量 output_fileif block 的局部变量,它在其中定义,当您离开该 block 时,它会超出范围。所以在那之后你使用 output_file 的任何地方都会提示变量没有定义。

if block 之外定义 output_file

FILE *output_file = NULL;
if (LOG_ENABLED == TRUE)
{
output_file = fopen(filename, "a");
}

一定要检查 output_file 是否设置为 NULL,你以后在任何地方使用它,或者设置为类似 stdout 的东西,以便输出到控制台。

关于c - 在 if 语句中打开文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54027168/

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