gpt4 book ai didi

c - 替代 fopen()'s mode "wx"for Windows fopen()?

转载 作者:可可西里 更新时间:2023-11-01 13:40:50 29 4
gpt4 key购买 nike

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

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

是否有其他方法可以在此处为 fopen 镜像 wx 功能模式?

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

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

最佳答案

简短的回答是,您不能传递“wx”或任何等效于 fopen 的函数,因为它会产生一个带有 CREATE_NEWCreateFilefopen 根本不接受任何参数组合来产生它 - 它非常有限。您可以在 Visual Studio CRT 代码库中自行查看 fopen 的源代码!

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

或者,您可以调用 _open ( http://msdn.microsoft.com/en-us/library/z0kc8e3z.aspx ),它将采用可以产生 CREATE_NEW 的参数 _O_EXCL,从而使它如果文件存在,则失败。

来自 CRT:

case _O_CREAT | _O_EXCL:
case _O_CREAT | _O_TRUNC | _O_EXCL:
filecreate = CREATE_NEW;
break;

关于c - 替代 fopen()'s mode "wx"for Windows fopen()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21803933/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com