如何使用open在“追加”模式下打开文件? FOPEN?

时间:2012-05-22 15:55:00

标签: c file file-io

为了写入新文件,我执行以下操作:

// some code 
...

 pfd[i][0] = open(argv[j+1],O_CREAT|O_WRONLY,0600);

问题:

  1. 使用openfopen之间有区别吗?

  2. 如何使用openappend模式下打开现有文件?

4 个答案:

答案 0 :(得分:1)

  1. 不同之处在于open是一个不可移植的POSIX函数,fopen是可移植的标准C函数。
  2. 在调用O_APPEND时指定open以使用追加模式。

答案 1 :(得分:1)

  1. open适用于POSIX系统。它不能移植到其他系统。 fopen是C标准的一部分,因此它适用于所有C实现。我忽略了open返回fopen返回FILE *的文件描述符的区别。

  2. 使用O_APPEND打开追加模式。

答案 2 :(得分:1)

使用O_APPEND

引自POSIX documentation

中的open()说明
  

O_APPEND
     如果设置,则文件偏移量应在每次写入之前设置为文件的末尾。

答案 3 :(得分:1)

1)是的。存在差异:缓冲或非缓冲I / O.
open()为您提供了一个RAW文件句柄(程序和文件系统中的文件之间没有缓冲区)。

fopen()授予您在流缓冲模式下处理文件的权限。例如,您可以逐行读取/写入数据(\ 0)。

使用fprintf()fscanf()fgets()fflush()等函数时,您可以看到很大的不同。

ps:fopen()并不比open()好。他们是不同的东西。有时你需要流缓冲区(fopen),有时你需要逐字节(打开)工作。

以下是关于流的好参考:http://www.cs.cf.ac.uk/Dave/C/node18.html#SECTION001820000000000000000

2)要在追加模式下打开,请添加O_APPEND标记:

open(argv[j+1],O_CREAT|O_APPEND|O_WRONLY,0600);