C语言-概念-打开文件

打开文件

在对文件进行读、写操作之前,首先要解决的问题是如何把程序中要读、写的文件与磁盘上实际的数据文件联系起来。在C语言中,其实这些并不困难,只需调用C语言提供的库函数fopen“打开”文件就可实现这些联系。fopen函数的一般调用形式为:
fopen(文件名,文件使用方式);
函数返回一个指向FILE类型的指针。例如:
FILE *fp;
fp=fopen(“file_a”,“r”);
fopen函数调用中有两个字符串作为参数。第一个字符串中包含了进行读、写操作的文件名,用来指定所要打开的文件。在本例中,指定的函数名为:file_a。第二个字符串中指定了文件的使用方式,用户可通过这个参数来指定对文件的使用意图。
若以上函数调用成功,函数返回一个FILE类型的指针,赋给文件指针变量fp,从而把指针fp与文件file_a联系起来了,也就是说,在此调用之后,指针fp就指向了文件file_a。
无论是哪种使用方式,当打开文件时出现了错误,fopen函数将返回NULL。为了保证在程序中使用正确打开的文件,建议用以下的程序段,当在打开文件发生错误时,使程序停止运行:

#include<stdlib.h>
...
if((fp=fopen("file_a","r"))==NULL)
{
	printf("Cannot open this file!\n");
	exit(0);//*注意:使用exit函数时,必须包含stdlib.h头文件*
}

C语言中,最常用的文件使用方式及其含义如下:
(1)“r”。为读而打开文本文件。当指定这种方式时,对打开的文件只能进行“读”操作。若指定的文件不存在,则会出错;另外一些情况,如企图去读一个不允许读的文件时,也会出错。
(2)“rb”。为读而打开一个二进制文件。其余功能与“r”相同。
(3)“w”。为写而打开文本文件。这时,如果指定的文件不存在,系统将用在fopen调用中指定的文件名建立一个新文件;如果指定的文件已存在,则将从文件的起始位置开始写,文件中原有的内容将全部消失。
(4)“wb”。为写而打开一个二进制文件。可以在指定文件位置进行写操作,其余功能与“w”相似。
(5)“a”。为在文件后面添加数据而打开文本文件。这时,如果指定的文件不存在,系统将用在fopen调用中指定的文件名建立一个新文件;如果指定的文件已存在,则文件中原有的内容将保存,新的数据写在原有内容之后。
(6)“ab”。为在文件后面添加数据而打开一个二进制文件。其余功能与“a”相同。
(7)“r+”。为读和写而打开文本文件。用这种方式时,指定的文件应当已经存在,既可以对该文件进行读,也可对该文件进行写,在读和写操作之间不必关闭文件。只是对于文本文件来说,读和写总是从文件的起始位置开始。在写新的数据时,只覆盖新数据所占的空间,其后的老数据并不丢失。
(8)“rb+”。为读和写而打开一个二进制文件。功能与“r+”相同,只是在读和写时,可以由位置函数设置读和写的起始位置,也就是说不一定从文件的起始位置开始读和写。
(9)“w+”。首先建立一个新文件,进行写操作,随后可以从头开始读。如果指定的文件已存在,则原有的内容将全部消失。
(10)“wb+”。功能与“w+”相同,只是在随后的读和写时,可以由位置函数设置读和写的起始位置。
(11)“a+”。功能与“a”相同,只是在文件尾部添加新的数据之后,可以从头开始读。
(12)“ab+”。功能与“a+”相同,只是在文件尾部添加新的数据之后,可以由位置函数设置读和写的起始位置。
当开始运行一个C程序时,系统将负责自动打开三个文件,这三个文件分别是标准输入文件、标准输出文件和标准出错文件,并规定相应的文件指针为stdin、stdout、stderr,它们已在stdio.h头文件进行了说明。通常情况下,stdin与键盘连接、stdout和stderr与终端屏幕连接。注意:这些指针是常量,不是变量,因此不能重新赋值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值