我有一个基本的程序,旨在复制bash的cp命令的功能。我正在为UNIX和Windows开发一个副本。我的UNIX版本运行良好,但是我发现Windows不支持fopen()的"wx“模式选项,如下所示:
file2 = fopen(argv[2], "wx");
这里有没有替代的方法来镜像fopen的wx功能模式?
(wx允许以写访问权限打开文件,但如果具有相同文件名的文件已存在,则将返回错误--这意味着您不会覆盖现有文件。参见here。
注意:正在尝试在VS2013的开发人员命令提示符下运行程序
发布于 2014-10-25 17:44:09
简短的答案是,您不能传递"wx“或任何与fopen等价的函数,因为这些函数会产生一个带有CREATE_NEW的CreateFile。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;https://stackoverflow.com/questions/21803933
复制相似问题