【发布时间】:2017-02-28 14:17:58
【问题描述】:
我正在尝试对一些没有日志记录的外部硬件进行一些调查。
为此,我正在使用 C 中的 varargs 制作自己的小型记录器。这是我的代码:
void write(const char* msg, ...)
{
va_list args;
va_start(args, msg);
FILE* file = fopen("/network/cewin/loggerfile.txt", "a");
if(file != NULL)
{
vfprintf(file, msg, args);
fputc('\n', file);
fclose(file);
va_end(args);
}
}
首先我在 Windows 7 上测试此代码,没有问题,但在 WinCE 上,包含参数的行没有打印出来。
这是一个例子:
write("Hello World") - Works on Win 7 and WinCE
write("Hello %s", "World") - Works on Win7, not on WinCE
write("Hello %i", 5) - Works on Win7, not on WinCE
我试图理解为什么最后 2 行在 Win7 上有效,但在 WinCE 上无效。也许我需要使用 vfprintf 以外的其他东西?
由于硬件原因,我无法检查方法的返回值。
【问题讨论】:
-
vfprintf也有返回状态,你知道的。错误处理并不止于检查file是否为有效句柄。 -
这个问题问得不好。请停止讨论,投票结束,让 OP 学习如何重新表述它,以便我们都能理解问题所在。
-
你应该调用
va_endoutside if body。 -
@Kobe 当然你可以打开另一个文件并写入它,为什么不呢??
标签: c windows-ce