您的位置:首页 > 编程语言 > C语言/C++

C/C++学习之 C语言文件操作

2017-12-13 20:59 253 查看
=====================================================================================

文件的基本概念:

程序设计中主要用到的两种文件:

(1)程序文件。包括源文件(后缀为.c)、目标文件(后缀为.obj)、可执行文件(后缀为.exe)等。这种文件的内容是程序代码。

(2)数据文件。文件的内容不是程序,而是供程序运行时读写的数据,如在程序运行过程中输出到磁盘(或其他外部设备)的数据,或在程序运行过程中供读入的数据。

“文件”一般指存储在外部介质上数据的集合。一批数据是以文件的形式存放在外部介质上的。操作系统是以文件为单位对数据进行管理的,也就是说,如果想找存放在外部介质上的数据,必须先按文件名找到所指定的文件,然后再从该文件中读取数据。要向外部介质上存储数据也必须先建立一个文件(以文件名作为标志),才能向它输出数据。

输入输出是数据传送的过程,数据像流水一样从一处流向另一处,因此常将输入输出形象地称为流,即数据流。流表示了信息从源到目的端的流动。“流”是一个传输通道,数据可以从运行环境(有关设备)流入程序中,或从程序流至运行环境。

C的数据文件由一连串的字符(或字节)组成,而不考虑行的界限,两行数据间不会自动加分隔符,对文件的存取是以字符(字节)为单位的。输入输出数据流的开始和结束仅受程序控制而不受物理符号(如回车换行符)控制,这就增加了处理的灵活性。这种文件称为流式文件。

文件名:

一个文件要有一个唯一的文件标识,以便用户识别和引用。文件标识包括三部分:(1)文件路径(2)文件名主干(3)文件后缀。

文件路径表示文件在外部存储设备中的位置。

文件标识通常被称为文件名。文件名主干的命名规则遵循标识符的命名规则。后缀用来表示文件的性质。

文件的分类:

根据数据的组织形式,数据文件可分为ASCLL文件和二进制文件。

数据在内存中是以二进制形式存储的,如果不加转换地输出到外存,就是二进制文件,可认为它就是存储在内存的数据映像,所以也称之为映像文件。

如果要求在外存上以ASCLL代码形式存储,则需要在存储前进行转换。ASCLL文件又称文本文件,每一个字节存放一个字符的ASCLL代码。

文件缓冲区:

ANSI
4000
C标准采用“缓冲文件系统”处理数据文件。系统自动地在内存区为程序中每一个正在使用的文件开辟一个文件缓冲区。从内存向磁盘输入数据必须先送到内存中的缓冲区,从磁盘向计算机读入数据,则一次从磁盘文件将一批数据输入到内存缓冲区(充满缓冲区),然后再从缓冲区逐个地将数据送到程序数据区(给程序变量)。

=====================================================================================

1.文件指针

FILE类型的结构体中存放文件的相关信息。一般通过设置一个指向FILE类型的指针变量,然后通过它来引用这些FILE类型的变量。例如:

FILE *fp; 即定义了一个指向文件型数据的指针变量。可以使fp指向某一个文件的信息区(是一个结构体变量),通过该文件信息区中的信息就能够访问该文件。通过文件指针变量能够找到与它关联的文件。

2.打开文件

fopen函数的调用方式为:

fopen(文件名,使用文件方式);

fopen的返回值即是指向该文件的指针(即文件信息区的起始地址)

使用文件的方式:

字符串说明
r以只读方式打开文件,该文件必须存在。
r+以读/写方式打开文件,该文件必须存在。
rb+以读/写方式打开一个二进制文件,只允许读/写数据。
rt+以读/写方式打开一个文本文件,允许读和写。
w打开只写文件,若文件存在则长度清为 0,即该文件内容消失,若不存在则创建该文件。
w+打开可读/写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留(EOF 符保留)。
a+以附加方式打开可读/写的文件。若文件不存在,则会建立该文件,如果文件存在,则写入的数据会被加到文件尾后,即文件原先的内容会被保留(原来的 EOF 符不保留)。
wb以只写方式打开或新建一个二进制文件,只允许写数据。
wb+以读/写方式打开或建立一个二进制文件,允许读和写。
wt+以读/写方式打开或建立一个文本文件,允许读写。
at+以读/写方式打开一个文本文件,允许读或在文本末追加数据。
ab+以读/写方式打开一个二进制文件,允许读或在文件末追加数据。
……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: