【发布时间】:2019-10-19 16:42:44
【问题描述】:
此代码有效。
pFile = fopen("d:\myfile.txt", "w");
此代码不起作用。
pFile = fopen("d:\ABC\myfile.txt", "w");
我确实有这个文件夹 d:\ABC
操作系统是 Windows 10,使用 Visual Studio 2019。
errno 是 22。
【问题讨论】:
-
你检查权限了吗?返回的错误码是什么?
-
请发布错误。
-
你不应该在
"d:\\ABC...."这样的字符串中转义\吗?可能\A是转义序列,\m不是。 -
printf("%s\n", strerror(22));报告什么? Windows 上的错误消息是什么? (在 Mac 和 Linux 上,它是EINVAL — Invalid argument;不过,这不一定是它在 Windows 上的翻译。)您也可以尝试:printf("name: [[%s]]\n", "d:\ABC\myfile.txt");,看看它给了你什么。反斜杠被“删除”的可能性很高。您应该考虑printf("name: [[%s]]\n", "d:\\ABC\\myfile.txt");甚至printf("name: [[%s]]\n", "d:/ABC/myfile.txt");。 Windows 程序 API 接受文件名中的斜杠;不喜欢它们的是命令提示符。 -
@Mark IMKOn 没有
\m转义序列,无论如何你不需要关心,唯一重要的是如果你想在字符串文字中有一个'\',您需要通过添加另一个反斜杠来转义它:例如:"Hello\\World";
标签: c windows visual-studio file