一、什么是文件
但是在程序设计中,我们⼀般谈的⽂件有两种:程序⽂件、数据⽂件。
程序文件:
程序⽂件包括源程序⽂件(后缀为.c),⽬标⽂件(windows环境后缀为.obj),可执⾏程序(windows环境后缀为.exe)。
数据文件:
⽂件的内容不⼀定是程序,⽽是程序运⾏时读写的数据,⽐如程序运⾏需要从中读取数据的⽂件,或者输出内容的⽂件。
本篇博客讨论的就是数据文件。
文件名:
⼀个⽂件要有⼀个唯⼀的⽂件标识,以便⽤⼾识别和引⽤。
文件名主要包括三部分:文件路径+文件名主干+文件后缀。例如: c:\code\test.txt 。
二、二进制文件和文本文件
三、文件的打开和关闭
流和标准流
流:
我们程序的数据需要输出到各种外部设备,也需要从外部设备获取数据,不同的外部设备的输⼊输出操作各不相同,为了⽅便程序员对各种设备进⾏⽅便的操作,我们抽象出了流的概念,我们可以把流想象成流淌着字符的河。
标准流:
文本文件
文件的打开和关闭
// 打开⽂件FILE * fopen ( const char * filename, const char * mode );// 关闭⽂件int fclose ( FILE * stream );
|
⽂件使⽤⽅式
|
含义
|
如果指定⽂件不存在
|
|
“r”(只读)
|
为了输⼊数据,打开⼀个已经存在的⽂本⽂件
|
出错
|
|
“w”(只写)
|
为了输出数据,打开⼀个⽂本⽂件
|
建⽴⼀个新的⽂件
|
|
“a”(追加)
|
向⽂本⽂件尾添加数据
|
建⽴⼀个新的⽂件
|
|
“rb”(只读)
|
为了输⼊数据,打开⼀个⼆进制⽂件
|
出错
|
|
“wb”(只写)
|
为了输出数据,打开⼀个⼆进制⽂件
|
建⽴⼀个新的⽂件
|
|
“ab”(追加)
|
向⼀个⼆进制⽂件尾添加数据
|
建⽴⼀个新的⽂件
|
|
“r+”(读写)
|
为了读和写,打开⼀个⽂本⽂件
|
出错
|
|
w+”(读写)
|
为了读和写,建议⼀个新的⽂件
|
建⽴⼀个新的⽂件
|
|
“a+”(读写)
|
打开⼀个⽂件,在⽂件尾进⾏读写
|
建⽴⼀个新的⽂件
|
|
“rb+”(读写)
|
为了读和写打开⼀个⼆进制⽂件
|
出错
|
|
“wb+”(读
写)
|
为了读和写,新建⼀个新的⼆进制⽂件
|
建⽴⼀个新的⽂件
|
|
“ab+”(读
写)
|
打开⼀个⼆进制⽂件,在⽂件尾进⾏读和写
|
建⽴⼀个新的⽂件
|
四、文件的顺序读写
|
函数名
|
功能
|
适⽤于
|
|
fgetc
|
字符输⼊函数
|
所有输⼊流
|
|
fputc
|
字符输出函数
|
所有输出流
|
|
fgets
|
⽂本⾏输⼊函数
|
所有输⼊流
|
|
fputs
|
⽂本⾏输出函数
|
所有输出流
|
|
fscanf
|
格式化输⼊函数
|
所有输⼊流
|
|
fprintf
|
格式化输出函数
|
所有输出流
|
|
fread
|
⼆进制输⼊
|
⽂件
|
|
fwrite
|
⼆进制输出
| 文件 |
1. fgetc与fputc -------- 字符输入输出函数
运用实例:

2.fgets与fputs--- 文本输入输出函数
运用实例:

3.fscanf 与 fprintf--- 格式输入输出函数
运用实例:

4.fscanf 与 fprintf--- 格式输入输出函数
运用实例:

五、文件的随机读写
1.fseek
int fseek ( FILE * stream, long int offset, int origin );
举例:

2.ftell
long int ftell ( FILE * stream );
举例:

3.rewind
void rewind ( FILE * stream );
举例:

六、文件读取结束的判定
1.feof
七、正确使用文件
1.文本文件的例子:

2.二进制文件的例子

389





