fopen 的mode

转自  http://blog.csdn.net/todd911/article/details/8976543

r 打开只读文件,该文件必须存在。

r+具有读写属性,从文件头开始写,保留原文件中没有被覆盖的内容。该文件必须存在。

w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。 
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。

a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。 
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。

关于a 和 a+ 网上有如下的说明:
"a"模式在添加数据前并不清除EOF标志. 添加数据后 用 MS-DOS 的 TYPE 命令只能显示数据到原来EOF 标志而并不会显示后来添加的.
"a+"模式会清除EOF标志, 添加数据后 用 MS-DOS 的 TYPE 命令能显示所有的数据.  "a+" 模式需要以CTRL+Z EOF标志结束的流输入.

但是我在linux下试验过,使用a和a+,写入的字符时一样的,没有EOF不一样的问题:
比如原来文件内容为abc,如果使用a模式添加了123,再读取该文件,遇到EOF就停止输出,最后显示abc123,如果按照上面的说法,应该只显示abc。
如果使用a+模式,最后显示也为abc123.
所以以上说法在linux下不成立,可能是在windows下的用法。

最后是在linux中man fopen中的说明:

a      Open  for  appending  (writing  at  end  of file).  The file is created if it does not exist.  The
         stream is positioned at the end of the file.

a+     Open for reading and appending (writing at end of file).  The file  is  created  if  it  does  not
          exist.   The  initial  file  position  for  reading is at the beginning of the file, but output is
          always appended to the end of the file.

上面也没有提到EOF的问题。

时间: 2024-08-28 03:35:52

fopen 的mode的相关文章

Linux C 文件输入输出函数 fopen()、getc()、putc()、fclose()、fprintf()、fscanf()、fgets()、fputs()、fseek()、ftell()、fgetpos()、fsetpos() 详解

  fopen(打开文件) 定义函数 FILE * fopen(const char * path,const char * mode); 函数说明 参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态. mode有下列几种形态字符串: r     打开只读文件,该文件必须存在. r+   打开可读写的文件,该文件必须存在. w    打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失.若文件不存在则建立该文件. w+ 打开可读写文件,若文件存在则文件长度清

fopen、open、popen

1.fopen       --FILE* fopen(const char* path,const char* mode) 打开普通文件 带缓冲区 缓冲文件系统是借助文件结构体指针来对文件进行管理,通过文件指针对文件进行访问,既可以读写字符.字符串.格式化数据,也可以读写二进制数据 返回值: fopen()文件顺利打开后,返回指向该流的文件指针,如果打开文件失败,则返回NULL,并将错误代码存在errno中 2.open      --int open(const char* pathname

文件流:"fopen","fclose",“ftell”"fseek","fgets","fprintf" ,“feof”,"fwrite","fread"

char const* filename="D:/hello.txt"; "fopen", FILE *fp=fopen(char const *name,char const mode); e.g:FILE *fp = fopen(filename,"wb"); 打开文件流,name为要打开文件的路径,如这里的filename:mode 为对文件的操作模式,通常使用:"wb"(写操作),"rb"(读操作)

fopen(),fclose() 打开/关闭文件

打开/关闭/刷新流 1. fopen() 打开流 功能: 1)fopen()打开由 path指定的一个文件. 2)fdopen()获取一个先有的文件描述符,并使一个标准的I/O流与该描述相结合.此函数常用于由创建管道和网络通信函数小所返回的描述符.因为这些特殊类型的文件不能用标准I/O fopen函数打开,我们必须先调用设备专用函数以获得一个文件描述符,然后用fopen使一个标准I/O流与该描述符相关联. 3)fropen()在一个指定的流上打开一个指定的文件,如若该流已经打开,则先关闭该流.若

Linux C 文件操作 -- 系统调用(open(),read()...) 和 标准I/O库(fopen(),fread()...)

一.什么是文件 在讲述文件操作之前,我们首先要知道什么是文件.看到这个问题你可能会感觉到可笑,因为对于用过计算机的人来说,文件是最简单不过的概念了,例如一个文本是一个文件,一个work文档是一个文件等.但是在Linux中,文件的概念还远不止于这些,在Linux中,一切(或几乎一切)都是文件.文件包括很多的内容,例如:大家知道的普通文件是文件,目录也是一个文件,设备也是一个文件,管道也是一个文件等等.对于目录.设备这些的操作也可以完全等同于对纯文本文件的操作,这也是Linux非常成功的特性之一吧.

error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation

遇到这个问题,请打开项目的Properties(属性)------->Configuration Properties(配置属性)------>C/C++ ------>Preprocessor(预处理器)------->Preprocessor Difinitions (预处理器定义)   添加   _CRT_SECURE_NO_WARNINGS     之后点击OK.最后   应用------>确定. error C4996: 'fopen': This function

第一天-----fopen使用

FILE *fopen(const char *path, const char *mode); /**/ FILE *fdopen(int fd, const char *mode); 打开一个流 参数一:const修饰,指定的文件---打开路径名为path的一个指定的文件 参数二:const修饰,指定对该I/O流的读写方式 ps:起始位置:文件的第一个有效字符 文件尾端:文件的最后一个有效字符的下一个字符 ///////////////////要求文件存在//////////////////

snort在使用过程中遇到的问题:ERROR: OpenAlertFile() => fopen() alert file log/alert.ids:No such file or directory

转自:http://www.cnblogs.com/kathmi/archive/2010/08/09/1795405.html Snort是著名的开源入侵检测工具,不仅它的嗅探功能极佳,在服务器安全方面也可提供安全防护. 近期因为涉及此项内容,故记录下来. 使用的软件如下: Snort_2_8_6_Installer.exe(按照默认路进安装即可) WinPcap_4_1_2.exe snortrules-snapshot-2860.tar.gz(规则库,解压到Snort的安装目录,如果提示重

fopen警告处理方式

warning C4996: “fopen”被声明为否决的 问题:vs2005中编程时,遇到如下: warning C4996: “fopen”被声明为否决的. 解释:微软的警告,主要是那些都是C库的函数,很多函数内部是不进行参数检测的(包括越界类的),微软担心使用这些会造成内存异常,所以就改写了一 下同样功能的函数,只不过进行了参数的检测,使用这些新的就可以了.不用特意记,每个函数在给出警告时都会告诉你相应的安全函数,注意一下警告信息就可以了,使用时再 查看一下MSDN.库函数改写例子: mk

fopen()和fclose()的用法

1.fopen()函数的用法fopen函数用于打开文件, 其调用格式为:FILE *fopen(char *filename, *type);fopen()函数中第一个形式参数表示文件名, 可以包含路径和文件名两部分.如:"B:TEST.DAT""C:\\TC\\TEST.DAT"注意:如果将路径写成"C:\TC\TEST.DAT"是不正确的, 这一点要特别注意.fopen函数用来打开一个文件,其调用的一般形式为: 文件指针名=fopen(文件名