首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于Windows fopen(),替代fopen()的模式"wx“?

对于Windows fopen(),替代fopen()的模式"wx“?
EN

Stack Overflow用户
提问于 2014-02-16 05:34:08
回答 1查看 1.7K关注 0票数 5

我有一个基本的程序,旨在复制bash的cp命令的功能。我正在为UNIX和Windows开发一个副本。我的UNIX版本运行良好,但是我发现Windows不支持fopen()的"wx“模式选项,如下所示:

file2 = fopen(argv[2], "wx");

这里有没有替代的方法来镜像fopen的wx功能模式?

(wx允许以写访问权限打开文件,但如果具有相同文件名的文件已存在,则将返回错误--这意味着您不会覆盖现有文件。参见here

注意:正在尝试在VS2013的开发人员命令提示符下运行程序

EN

回答 1

Stack Overflow用户

发布于 2014-10-25 17:44:09

简短的答案是,您不能传递"wx“或任何与fopen等价的函数,因为这些函数会产生一个带有CREATE_NEWCreateFilefopen不接受任何参数组合来实现这一点--这是非常有限的。您可以在Visual Studio CRT代码库中自己查看fopen的源代码!

但是,您可以直接调用CreateFile。这可能是最好的方法。

或者,您可以调用_open (http://msdn.microsoft.com/en-us/library/z0kc8e3z.aspx),它将接受参数_O_EXCL,该参数可以生成CREATE_NEW,因此如果文件按您希望的方式存在,则会导致它失败。

在CRT上:

代码语言:javascript
复制
case _O_CREAT | _O_EXCL:
case _O_CREAT | _O_TRUNC | _O_EXCL:
    filecreate = CREATE_NEW;
    break;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21803933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档