gpt4 book ai didi

c++ - fprintf 调试断言失败

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:20:20 26 4
gpt4 key购买 nike

我有一个程序,如果我手动启动它,它可以正确运行。但是,如果我尝试添加注册表项以在启动期间自动启动它,则会出现此错误:

Debug assertion failed (str!=null) fprintf.c line:55

我试图在任何事情发生之前添加 Sleep(20000),但我得到了同样的错误。

代码如下:

main()
{
FILE* filetowrite;
filetowrite = fopen("textfile.txt", "a+");

writefunction(filetowrite);
}

int writefunction(FILE* filetowrite) {

fprintf(filetowrite, "%s", "\n\n");
...
}

我还尝试将文件名作为 char* 传递并在 writefunction() 中打开它,但我得到了同样的错误。

最佳答案

fopen 失败。您应该始终检查返回值以查看它是否有效:

filetowrite = fopen("textfile.txt", "a+");
if (filetowrite == NULL) {
// log something, including errno
exit (1);
}

VC++中fprintf.c的第55行是:

_VALIDATE_RETURN( (str != NULL), EINVAL, -1);

strFILE * 参数(漂亮的变量名,微软,你到底在想什么?)。

我怀疑尝试通过注册表运行它可能存在权限问题或类似问题(大概在 RunRunOnce 下或作为服务)。

一旦您弄清楚实际错误是什么,解决方案应该更容易生成。

如果是权限问题,你应该能够通过使用类似c:\\a\\directory\\i\\KNOW\\i\\can\\write\\to\\textfile.txt 看看它是否有效。然后您还可以使用该文件来记录当前目录等内容。

如果只是证明“后台”启动方法位于错误的目录中,请将更改目录作为程序的第一个操作之一。

关于c++ - fprintf 调试断言失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10051961/

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