C fopen模式参数

2024-01-08

为什么'mode'参数是fopen在C中由字符串给出? (以我的思维方式)将其作为位掩码或类似的东西会更有意义。字符串所需的开销是低效且不必要的。


C11 §7.21.5.3 fopen 函数

论点mode指向一个字符串。如果字符串是以下之一,则文件是 以指定模式打开。否则,行为是未定义的。271)

在脚注中:

271) 如果字符串以上述序列之一开头,则实现可能会选择忽略其余字符,或者可能使用它们来选择不同类型的文件(其中一些可能不符合 7.21.2 中的属性)

根据 C99 的基本原理,委员会认为实现可以选择使用mode除了标志之外:

国际标准的基本原理 - 编程语言 - C http://www.open-std.org/jtc1/sc22/wg14/www/C99RationaleV5.10.pdf§7.19.5.3 fopen 函数

实现可以选择允许附加文件规范作为模式字符串参数的一部分。例如,

file1 = fopen(file1name, "wb,reclen=80");

可能是提供面向记录的二进制文件并允许程序员指定记录长度的系统上的合理扩展。

GNU libc 有一个扩展,允许mode包含ccs=STRING, see glibc手册 http://www.gnu.org/software/libc/manual/html_mono/libc.html#Opening-Streams

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C fopen模式参数 的相关文章

随机推荐