天天看点

学习笔记(30):C语言 从小白到大神: 入门篇-文件的开、关、读、写,实战操练

立即学习:https://edu.csdn.net/course/play/8088/178714?utm_source=blogtoedu

1. 文件的打开

文件在读或者写之前,我们必须要打开,在读或者写结束之后,我们必须要关闭,否则会造成资源泄露;

文件的打开使用fopen函数,调用方式如下:

FILE *fp;  //FILE是个结构,fp是指向结构FILE的指针变量

fp = fopen(文件名,使用文件的方式); //

例如:fp = fopen(“text1.txt”,”r”); //打开text1文件,使用的方式为只读;

fopen()这个函数返回一个指向text1文件的指针,这个指针被赋值给了fp。我们可以认为fp指向了text1文件。

FILE结构的意义:保存很多和文件有关的信息,如文件名,文件打开方式,当前文件位置等;

fopen()函数有可能执行失败,比如文件不存在,他就会执行失败,这个时候fopen()会返回一个空

打开方式表:

学习笔记(30):C语言 从小白到大神: 入门篇-文件的开、关、读、写,实战操练

2. 文件的关闭

文件只有在成功被fopen打开之后,才存在文件关闭的问题

为什么要关闭文件:

(1)释放这个文件占用的内存资源,如果很多资源都用了不释放,那么最后内存资源耗尽就会导致程序崩溃

(2)我们往文件里写数据时不会立即往磁盘上写,系统会把数据写到一个叫“缓冲区”这么一个地方,缓冲区满时系统才往磁盘文件上写,写完之后把缓冲区清空继续等待用户往文件中写数据。如果缓冲区数据没有满却退出了程序,那么缓冲区的数据就没来得及写到磁盘文件上,造成数据丢失。关闭文件这个动作会触发系统把缓冲区中的数据立即写到磁盘上,这就避免了缓冲区中的数据丢失的问题。

文件关闭函数的一般形式:

fclose(文件指针);

如:

if(fp != NULL)

fclose(fp); //fp就是fopen()的返回值

3. 文件的读写

(1)fputc函数

fputc():把一个字符写到磁盘文件上去,一般形式为:

fputc(ch,fp); //ch是这个字符,可以是一个字符常量,也可以是一个字符变量。fp是fopen返回的那个文件指针。将字符输出到fp所指向的文件上去;

如果fputc失败,则返回EOF,如果输出成功,则返回值就是输出的字符的ascii码值

EOF(End Of file):是个符号常量,其实他代表-1

fp = fopen("FTest.txt","w");//可以自己指定文件路径,如fp = fopen("E:\\C语言学习\\text1.txt","w");若不指定,则默认为工程的solution1\project1目录下

if(fp == NULL)

{

printf("文件打开失败");

}

else

{

//文件打开成功才走这里

char reco = fputc('a',fp);

if(reco == EOF)

{

//写失败

//....

}

reco = fputc('d',fp);

reco = fputc('e',fp);

fclose(fp);

}

(2)fgetc函数

fgetc:从指定文件读入一个字符;

调用形式为: char reco = fgetc(fp);

如果执行成功,返回读入的字符;如果读入失败或者整个文件读到末尾了,则返回EOF;

fp = fopen("FTest.txt","r");  //文件刚打开,文件指针指向开头

if(fp == NULL)

{

printf("文件打开失败");

}

else

{

//文件打开成功才走这里

char reco = fgetc(fp); //每读一个字符,文件指针自动向下走一个字符

while(reco != EOF) //读入失败或者到文件结束这个条件都成立。

{

putchar(reco); //屏幕上输出一个字符

reco = fgetc(fp);

}

fclose(fp);

}

(3)feof函数

我们是用EOF来判断读入的内容是否到文件结束;现在fopen打开文件的方式是文本方式,如果我们将来以二进制格式打开文件,二进制数据里可能会存在-1这种数据,这个就跟EOF冲突了;这说明我们通过和EOF比较来判断文件是否结束不合适,因此引入函数feof

一般形式:feof(fp);

用来判断文件是否结束,如果文件结束的话,feof(fp);返回1(真),如果文件没结束,feof(fp)返回0(假),不管是以二进制形式打开文件还是以文本形式打开文件,feof()函数都适用;

文件操作函数表:

学习笔记(30):C语言 从小白到大神: 入门篇-文件的开、关、读、写,实战操练

继续阅读