为什么fopen的参数这么奇怪呢?

FILE* fopen(const char*,const char* type)

大一刚学编程的时候就对fopen的参数很迷惑,今天仔细思考了fopen的参数的格式,我觉得参数设计得很不合理

fopen的格式是这样:

r     读

w    写,文件截断为0

a    写,添加模式

+    读+写

b      二进制打开

rwa是主位,+b是修饰位  

但是我认为这个接口并不友好,因为这几个字符的功能并不是正交的

rwa看上去就是分别代表read write append,仅仅是看上去而已,但是w竟然还有截短的功能,而a也暗含了write的意思,+则表示读写.用的时候还得去回忆这几个字符代表的意思,非常不直观

如果让我设计这个功能,直接用位掩码好了,或者用让每个字符只表示一个意思,r-read w-write a-append b-binary t-截短

如果想打开读写文件,用"rw",要截短,用"rwt",再加上二进制"rwtb"

原文地址:https://www.cnblogs.com/mightofcode/p/2818851.html