我正在尝试从其主线程中的进程外COM服务器运行以下代码,但是没有创建任何文件。
我想知道是否有人能告诉我为什么会这样?
FILE *f = fopen("Log.txt", "w");
fputs("Tony", f);
fputs("\n", f);
fclose(f);
答案 0 :(得分:2)
从权限问题来看,文件实际上已经创建但是你找不到它的几率非常好。您没有为该文件提供完整路径名(如"c:\\blah\\log.txt"
),这意味着它将在COM客户端应用程序的当前工作目录中创建。保证不与COM服务器所在的目录相同。
您需要指定完整路径。在Windows中,它应该是您保证对其进行写访问的目录。使用SHGetFolderPath()获取appdata文件夹的路径。或者为记录留出固定的目录名称(不推荐)。
答案 1 :(得分:0)
我认为最可能的原因是fopen因访问被拒绝错误而失败。你试过单步执行代码吗?诊断它的最佳方法是附加调试器并检查errno的值。