C进阶:文件的基础操作(一)

简介: C进阶:文件的基础操作

一.文件指针

1.缓冲文件系统中,关键的概念是“文件类型指针”,简称“文件指针”;
2.每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等);

3.这些信息是保存在一个结构体变量中的。该结构体类型是有系统声明的,取名FILE。

下面是在 vs2013编译环境提供的 stdio.h 头文件中有以下的文件类型申明:

1. struct _iobuf
2. {
3.     char *_ptr;
4.     int  _cnt;
5.     char *_base;
6.     int  _flag;
7.     int  _file;
8.     int  _charbuf;
9.     int  _bufsiz;
10.     char *_tmpfname;
11.  };
12. typedef struct _iobuf FILE;

不同的编译器结构体的内容可能有些不一样,但都大同小异;

每当打开一个文件的时候,系统会根据文件的情况自动创建一个FILE结构的变量,并填充其中的信息,使用者不必关心细节。
一般都是通过一个FILE的指针来维护这个FILE结构的变量,这样使用起来更加方便。

下面创建一个文件指针变量:

1.定义pf是一个指向FILE类型数据的指针变量。可以使pf指向某个文件的文件信息区(是一个结构体变量);

2.通过该文件信息区中的信息就能够访问该文件。也就是说,通过文件指针变量能够找到与它关联的文件。

例如:

 


二.文件的打开和关闭

1.文件的打开

打开文件我们需要使用到 fopen 函数;

让我们看看 fopen 在库函数中的声明:

1.需要头文件<stdio.h>;

2.参数const char *filename: 要打开的文件的文件名 ;

3.参数const char *mode :表示要打开的模式;

4.返回值:返回一个文件指针,若文件打开失败则返回一个空指针

注意(文件扩展名):

有些小伙伴们打开文件的时候,认为自己的文件名是正确的,但编译器却显示没有这个文件,这个时候不要质疑电脑,电脑是不会出错的,遇到这种情况我们应检查文件管理器的文件扩展名是否开启,如果没有打开那打开就行了,你会发现有些文件名称发生了变化;

详情如图:

文件打开模式:


 

2.文件的关闭

关闭文件需要使用到函数 fclose  ;

下面来看看 fclose 在库函数中的声明:

1.参数 FILE *stream : 这是指向 FILE 对象的指针,该 FILE 对象指定了要被关闭的流;

2.返回值:若文件关闭成功,则返回0

                若文件关闭失败,则返回EOF

实例:

1. int main()
2. {
3.  FILE* pf = fopen("test.txt", "w");   //以只写的方式打开文件
4.  if (pf == NULL)   //判断文件是否打开成功
5.  {
6.    perror("fopen");  //若打开失败,则显示错误信息
7.    return 0;
8.  }
9.  //写文件
10.   //.......
11.   //关闭文件
12.   fclose(pf);   
13.   pf = NULL;  //将文件指针置空,防止野指针的使用
14.   return 0;
15. }

三.文件的读写

1.读与写,输出与输入的概念


目录
相关文章
|
编译器
【C进阶】文件操作(下)(详解--适合初学者入门)(上)
【C进阶】文件操作(下)(详解--适合初学者入门)(上)
|
7月前
|
C++ 数据格式
【C++】C++中的【文件IO流】使用指南 [手把手代码演示] & [小白秒懂]
【C++】C++中的【文件IO流】使用指南 [手把手代码演示] & [小白秒懂]
【C++】C++中的【文件IO流】使用指南 [手把手代码演示] & [小白秒懂]
|
7月前
|
存储 安全 数据处理
文件I/O:基础与实战
文件I/O:基础与实战
|
API C语言
【C进阶】文件操作(下)(详解--适合初学者入门)(下)
【C进阶】文件操作(下)(详解--适合初学者入门)(下)
|
存储 编译器 数据格式
【C进阶】文件操作(下)(详解--适合初学者入门)(中)
【C进阶】文件操作(下)(详解--适合初学者入门)(中)
|
存储
C进阶:文件的基础操作(二)
C进阶:文件的基础操作(二)
53 0
|
C语言
C进阶:文件的基础操作(三)
C进阶:文件的基础操作(三)
76 0
|
设计模式 SQL 开发框架
学PHP语言如何进阶?具体步骤是怎样的?底层原理是什么?
学PHP语言如何进阶?具体步骤是怎样的?底层原理是什么?
111 0
|
移动开发 Java Unix
python初学者指南:文件操作重点(基本操作、文件模式)
python初学者指南:文件操作重点(基本操作、文件模式)
288 0
python初学者指南:文件操作重点(基本操作、文件模式)
|
机器学习/深度学习 SQL 数据采集
阿里云相关产品基本操作演示|学习笔记
快速学习阿里云相关产品基本操作演示
192 0
阿里云相关产品基本操作演示|学习笔记