gpt4 book ai didi

c - fopen 创建文件 : Access modes Conversion

转载 作者:行者123 更新时间:2023-11-30 18:56:46 24 4
gpt4 key购买 nike

我想知道与以下 fopen 访问模式匹配的 createfile 访问和共享模式是什么:

  • “rb+c”
  • “白+c”

我检查了一个包含所有这些信息的漂亮表格,但没有找到。

最佳答案

fopen() 'c' 标志不适用于 CreateFile(),因为它仅应用与打开文件相关的模式,而不是创建文件。

对于 Linux,“fopen()”问题中指示的标志如下:

  • “rb+c”
    • r 打开文件进行读取。流位于文件的开头。
    • b 严格来说是为了兼容C89,没有任何作用;在所有符合 POSIX 的系统(包括 Linux)上,“b”都会被忽略。
    • + 扩展 r 标志(上面)以允许写入文件。
    • c 不要进行打开操作,或者后续的读写操作,线程取消点。
  • “wb+c”
    • w 打开文件进行写入。如果文件不存在,则创建该文件,否则该文件将被截断为零长度。流位于文件的开头。
    • b 严格来说是为了兼容C89,没有任何作用;在所有符合 POSIX 的系统(包括 Linux)上,“b”都会被忽略。
    • + 扩展 w 标志(上面)以允许读取文件。
    • c 不要进行打开操作,或者后续的读写操作,线程取消点。

转换为CreateFile():

  • “rb+c”
  • dwDesiredAccess GENERIC_READ|GENERIC_WRITE
    dwShareMode FILE_SHARE_READ|FILE_SHARE_WRITE
    dwCreationDisposition OPEN_EXISTING
    dwFlagsAdAttributes FILE_ATTRIBUTE_NORMAL

    CreateFile(
    ...,
    GENERIC_READ|GENERIC_WRITE,
    FILE_SHARE_READ|FILE_SHARE_WRITE,
    NULL,
    OPEN_EXISTING,
    FILE_ATTRIBUTE_NORMAL,
    ...
    );

  • “wb+c”
  • dwDesiredAccess GENERIC_READ|GENERIC_WRITE
    dwShareMode FILE_SHARE_READ|FILE_SHARE_WRITE
    dwCreationDisposition TRUNCATE_EXISTING|OPEN_ALWAYS
    dwFlagsAdAttributes FILE_ATTRIBUTE_NORMAL

    CreateFile(
    ...
    GENERIC_READ|GENERIC_WRITE,
    FILE_SHARE_READ|FILE_SHARE_WRITE,
    NULL,
    TRUNCATE_EXISTING|OPEN_ALWAYS,
    FILE_ATTRIBUTE_NORMAL,
    ...
    );

关于c - fopen 创建文件 : Access modes Conversion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23373302/

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