C fopen模式参数

Dyl*_*lan 5 c fopen file

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

Yu *_*Hao 3

\n

C11 \xc2\xa77.21.5.3 fopen 函数

\n\n

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

\n
\n\n

在脚注中:

\n\n
\n

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

\n
\n\n

根据 C99 基本原理,委员会认为实现可以选择使用mode标志以外的其他内容:

\n\n
\n

国际标准 \xe2\x80\x94 编程语言 \xe2\x80\x94 C 的基本原理 \xc2\xa77.19.5.3 fopen 函数

\n\n

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

\n\n
file1 = fopen(file1name, "wb,reclen=80");\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n
\n\n

GNU libc 有一个允许modecontains的扩展ccs=STRING,请参阅glibc 手册

\n