参考文章:
http://www.jb51.net/article/37688.htm
http://www.cnblogs.com/hnrainll/archive/2011/09/16/2178706.html
http://www.cnblogs.com/joeblackzqq/archive/2011/04/11/2013010.html
1 fopen 打开文件
FILE *fopen(char *filename, char *mode)
filename 文件名称
mode 打开模式:
r 只读方式打开一个文本文件
rb 只读方式打开一个二进制文件
w 只写方式打开一个文本文件
wb 只写方式打开一个二进制文件
a 追加方式打开一个文本文件
ab 追加方式打开一个二进制文件
r+ 可读可写方式打开一个文本文件
rb+ 可读可写方式打开一个二进制文件
w+ 可读可写方式创建一个文本文件
wb+ 可读可写方式生成一个二进制文件
a+ 可读可写追加方式打开一个文本文件
ab+ 可读可写方式追加一个二进制文件
fopen与open的区别:
1、缓冲文件系统与非缓冲系统的区别
缓冲文件系统(fopen):在内存为每个文件开辟一个缓存区,当执行读操作,从磁盘文件将数据读入内存缓冲区,装满后从内存缓冲区依次读取数据。写操作同理。
内存缓冲区的大小影响着实际操作外存的次数,缓冲区越大,操作外存的次数越少,执行速度快,效率高。缓冲区大小由机器而定。
借助文件结构体指针对文件管理,可读写字符串、格式化数据、二进制数据。
非缓冲文件系统(open):依赖操作系统功能对文件读写,不设文件结构体指针,只能读写二进制文件。
2、open属于低级IO,fopen属于高级IO
3、open返回文件描述符,属于用户态,读写需进行用户态与内核态切换。
fopen返回文件指针
4、open是系统函数,不可移植
fopen是标准C函数,可移植
5、一般用fopen打开普通文件,open打开设备文件
6、如果顺序访问文件,fopen比open快
如果随机访问文件,open比fopen快
2 fprintf 传送格式化输出到一个文件中
3 fscanf 从一个流中执行格式化输入
4 clearerr 清除文件流的错误旗标
5 fclose 关闭文件
6 fdopen 将文件描述符转为文件指针
7 feof 检查文件流是否读到了文件尾
8 fflush 更新缓冲区
9 fgetc 从文件中读取一个字符
10 fgets从文件中读取字符串
11 fileno 返回文件流对应的文件描述符
12 fputc 将指定字符写入文件流中
13 fputs 将指定字符串写入文件中
14 freopen 打开文件
15 fseek 移动文件流读写位置
16 ftell 取得文件流的读取位置
17 fwrite 将数据写至文件流
18 getc 从文件中读取一个字符,同fgetc
19 getchar 从标准输入设备中读取一个字符
20 gets 从标准输入设备中读取字符串
21 mktemp 产生唯一的临时文件名
22 putc 将指定字符写入文件中,同fputc
23 putchar 将指定字符写入到标准输出设备
24 rewind 重设文件流读写位置到文件开头,同 fseek(stream, 0, SEEK_SET)