【发布时间】:2020-08-07 20:03:16
【问题描述】:
在 C 程序中,我想将数据附加到文本文件中。像这样使用 fopen 函数:
FILE* fileLog;
char logFile_name[] = "C:\\pg\\log.txt";
fileLog = fopen(logFile_name, "r+");
int j = 0;
while (j < 4)
{
fprintf(fileLog, "%u,%s", GetLastError(), "1_aba_1\n");
j++;
}
GetLastError 有时会返回 (ok),但文件会被覆盖而不是添加。
这样使用 fopen 函数:
FILE* fileLog;
char logFile_name[] = "C:\\pg\\log.txt";
fileLog = fopen(logFile_name, "a+");
std::cout << GetLastError() << " LOG \n";
int j = 0;
while (j < 3)
{
fprintf(fileLog, "%u,%s", GetLastError(), "56_aba_4\n");
j++;
}
添加了数据,但 GetLastError 给出错误 183。 Programm 在这两种情况下都可以正常工作,但是我在 postgre 扩展中使用了这个代码,它会因为未知原因而崩溃并失去连接服务器。如何正确无误地将数据添加到文件中?
【问题讨论】:
-
如果最后一个函数没有报错,
GetLastError()有意义吗?fopen()是否在 Windows 上设置了 win32 错误? -
你应该检查
fopen()是否成功,检查它返回的指针是否为空。 -
我认为因为
GetLastError(),扩展正在下降,因为GetLastError()仍然返回某种错误 -
@SovaKefirov 你不能混合使用
fopen等和GetLastError()。此外,GetLastError()返回的错误号仅由记录设置它的 WINAPI 函数设置,并且仅在所述 WINAPI 函数失败时设置。 -
为什么要混合 C++ 和 C?
标签: c file getlasterror