我有一个基本程序,旨在复制bash的cp命令的功能。我正在为UNIX和Windows开发一个副本。我的UNIX版本运行正常,但是,我发现Windows不支持fopen()的“wx”模式选项,如下所示:
file2 = fopen(argv[2], "wx");
有没有另一种方法来镜像fopen的wx功能模式?
(wx允许打开具有写访问权限的文件,但如果已存在具有相同文件名的文件,则会返回错误 - 这意味着您不会覆盖现有文件。请参阅here。
注意:尝试在VS2013的Developer Command Prompt中运行程序
答案 0 :(得分:3)
简短的回答是你无法通过" wx"或任何与fopen等效的产生CreateFile
与CREATE_NEW
。 fopen
根本不接受任何参数组合来产生 - 它非常有限。您可以在Visual Studio CRT代码库中自己查看fopen
的源代码!
但是,您可以直接致电CreateFile
。这可能是最好的方法。
或者你可以拨打_open
(http://msdn.microsoft.com/en-us/library/z0kc8e3z.aspx),它会接受可能产生_O_EXCL
的参数CREATE_NEW
,因此如果文件存在,则会导致它失败想。
来自CRT:
case _O_CREAT | _O_EXCL:
case _O_CREAT | _O_TRUNC | _O_EXCL:
filecreate = CREATE_NEW;
break;