文件概述
文件是指存储在外部存储器上的数据集合。更准确的来说,文件就是一组相关元素或数据的有序集合,而且每个集合都有一个符号化的指代,称这个符号化的指代为文件名。
文件类型
根据文件在外部存储器上的组织形式,文件可以分为ASCII文件和二进制文件。
ASCII文件(文本文件):以字符的方式进行存储,一个字符对应一个ASCII码,而一个ASCII码占用1字节。例如:整数12在内存中占用4个字节;如果按照ASCII码的方式存储,则占用2个字节。ASCII文件可以阅读,可以打印,但是它与内存数据交换时需要转换;
二进制文件:将内存中的数据按照其在内存中的存储形式原样输出并保存在文件中。二进制文件占用空间小,内存数据与磁盘数据交换时无需转换,可以节省外存空间和转换时间。但是二进制文件不可阅读、打印。
在C语言中,扩展名为.c的源文件是由字符构成,而扩展名由.obj目标文件和.exe可执行文件是由二进制符号构成的。其实:txt文件也是一个文本文件
C如何操作文件——文件指针
C语言是通过文件指针变量的操作来实现对文件的具体访问。
文件的指针不是指向一段内存空间,而是指向描述有关这个文件的相关信息的一个文件信息结构体,该结构体定义在studio.h头文件中。当然,也无需了解有关此结构体的详细细节,只需要知道如何使用文件指针就行了。
声明文件指针变量的一般形式为:
FILE* 文件型指针变量名;
其中,FILE应为大写;它实际上是由系统定义的一个结构体,该结构体中包含了文件名、文件使用方式、当前位置等信息。
在stdio.h文件中,FILE的结构体定义为:
typedof atruct{
int _fd; /* 文件号 */
int _cleft; /* 缓冲区剩下的字符 */
int _mode; /* 文件操作模式 */
char* _nextc; /* 下一个字符的位置 */
char* _buff; /* 文件缓冲区位置 */
}FILE;
打开方式 | 含义 | 指定文件不存在时 | 指定文件存在时 |
r | 只读方式打开文本文件 | 出错 | 正常打开 |
w | 只写方式打开文本文件 | 建立新文件 | 文件原有内容丢失 |
a | 追加方式打开文本文件 | 建立新文件 | 在原有内容末尾追加 |
r+ | 读/写方式打开文本文件 | 出错 | 正常打开 |
w+ | 读/写方式创建新的文本文件 | 建立新文件 | 文件原有内容丢失 |
a+ | 读/追加方式建立新的文本文件 | 建立新文件 | 在原有内容末尾追加 |
rb | 只读方式打开二进制文件 | 出错 | 正常打开 |
wb | 只写方式打开二进制文件 | 建立新文件 | 文件原有内容丢失 |
rb+ | 读/写方式打开二进制文件 | 出错 | 正常打开 |
ab | 追加方式打开二进制文件 | 建立新文件 | 在原有内容末尾添加 |
ab+ | 读/追加方式创建新的二进制文件 | 建立新文件 | 在原有内容 |
wb+ | 读/写方式创建新的二进制文件 | 建立新文件 | 文件原有内容丢失 |
缓冲区(Buffer):
指在程序执行时,所提供的额外内存,可用来暂时存放做准备执行的数据。它的设置是为了提高存取效率,因为内存的存取速度比磁盘驱动器快得多
打开和关闭文件
用fopen函数打开数据文件,方式为:fopen(文件名,使用文件方式)
fp=fopen("test.txt","r");
用fclose函数关闭数据文件,方式为:fclose(文件指针)
检测文件是否读到最后有两种方式:①利用feof()函数检查文件是否读取完毕
②利用文件结束标志EOF(即-1)
以上只是自己对文件的总结,希望对你们有用 ~