我有一个程序,如果我手动启动它,它可以正确运行。但是,如果我尝试添加注册表项以在启动过程中自动启动它,则会收到以下错误:
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()
,但我得到同样的错误。
The fopen
正在失败。你应该always检查返回值以查看是否有效:
filetowrite = fopen("textfile.txt", "a+");
if (filetowrite == NULL) {
// log something, including errno
exit (1);
}
第 55 行fprintf.c
在VC++中是:
_VALIDATE_RETURN( (str != NULL), EINVAL, -1);
where str
is the FILE *
参数(好变量名,微软,你到底在想什么?)。
我怀疑可能存在权限问题或与尝试通过注册表运行它类似的问题(大概在Run
or RunOnce
或作为服务)。
一旦弄清楚实际错误是什么,解决方案应该更容易产生。
如果这是权限问题,您应该能够通过使用类似的方法来找到它c:\\a\\directory\\i\\KNOW\\i\\can\\write\\to\\textfile.txt
看看它是否有效。然后您还可以使用该文件来记录当前目录等内容。
如果只是发现“后台”启动方法位于错误的目录中,请将更改目录作为程序的首要操作之一。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)