关于open,fopen的参数,白话文版!

来源:互联网 发布:孔浩的java视频 编辑:程序博客网 时间:2024/05/01 10:50

相信大家都看怕了一些技术性的文章,里面都是一些专业的术语,本来很简单的问题,在其描述之下,让新手摸不着头脑。

本人也刚进入计算机行业,能做的就是翻译一下那些狗屁人写的文章,直接用白话的方式,让大家容易理解一些。

先开始说open这个函数。

它的定义是这样的:int open(const char *path,int oflags)

其中path参数顾名思义,表示文件所在的路径,例如“/root/homework”(这个是linux底下的文件路径形式)

oflags是什么呢?他基本的值有

O_RDONLY这个表示文件以只读方式打开,就是打开文件后,你只能进行读操作,不可写入数据。

O_WRONLY这个表示以写入方式打开,就是你打开文件后,你只能进行写操作,而不可读出数据

O_RDWR这个是以读写操作打开文件,你既可写也可读文件

下面几个是oflags的可选项目

O_APPEND是把写入的数据插入到文件末尾,就是说是从文件末尾写入你的数据

O_TRUNC是把文件中内容清空后,再写入你的数据

O_CREAT是创建文件(若文件存在则不创建)

现在开始举例说明:

open("/root/homework",O_RDONLY)以读的方式打开root目录下的文件homework,该文件必须是已经存在

 

open("/root/homework",O_RDONLY|O_CREAT)以读的方式打开root目录下的文件homework,如果该文件不存在则会创建这个文件

 

open("/root/homework",O_WRONLY)以写的方式打开文件,该文件要事先存在

 

open("/root/homework",O_WRONLY|O_CREAT)以写的方式打开root目录下的文件homework,如果该文件不存在则会创建这个文件

 

open("/root/homework",O_WRONLY|O_CREAT|O_APPEND)以写的方式打开root目录下的文件homework,如果该文件不存在则会创建这个文件,你写入的文件会插入到文件末尾,例如原来homework文件中的内容为“你是谁”,你现在要写入“我是我”,那么你写入后文件中的内容为“你是谁我是我”

 

open("/root/homework",O_WRONLY|O_CREAT|O_TRUNC)以上面为例子,例如原来homework文件中的内容为“你是谁”,你现在要写入“我还就是我”,那么你写入后文件中的内容为“我还就是我”,这个O_TRUNC选项会先把文件先清空。

 

与O_CREAT相关的权限选项先不说了

 

 现在说一下fopen这个函数

 

他的定义是:FILE *fopen(const char *filename,const char *mode);

第一个参数是文件路径了,例如“/root/check”

第二个参数有很多个

r 以读方式打开

w 以写方式打开,并把文件清空,然后再写入数据,注意:如果文件不存在,它还会创建文件

a  以写方式打开,数据写入到文件末尾,也就是上次写入的数据末尾,如果上次写到“123456”,你再写的话就是“123456789”

r+ 以读写方式打开

w+ 以读写方式打开

a+ 以读写方式打开