C fopen模式参数

时间:2013-09-25 08:04:53

标签: c file fopen

为什么字符串给出C中fopen的'mode'参数?它会更有意义(以我的思维方式),因为它是一个位掩码或喜欢。字符串所需的开销是低效且不必要的。

2 个答案:

答案 0 :(得分:3)

  

C11§7.21.5.3fopen函数

     

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

在脚注中:

  

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

根据C99理由,委员会认为实施可以选择使用mode而不是标志:

  

Rationale for International Standard — Programming Languages — C§7.19.5.3fopen函数

     

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

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

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

GNU libc有一个允许mode包含ccs=STRING的扩展程序,请参阅glibc manual

答案 1 :(得分:1)

如果它是一个位掩码,它将更加局限于未来的扩展。 GNU C库已经允许10种不同的模式和MSVC 15.此外,它们支持,ccs=string语法,这是使用位掩码无法实现的