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.读与写,输出与输入的概念


目录
相关文章
|
7月前
|
编译器
【C进阶】文件操作(下)(详解--适合初学者入门)(上)
【C进阶】文件操作(下)(详解--适合初学者入门)(上)
|
7月前
|
监控 Linux Shell
(二)Linux命令行工具进阶:探索高级功能
在Linux系统中,命令行工具提供了丰富的高级功能,用于处理文本、管理进程、监控系统性能等任务。本文将深入探讨一些高级命令和技巧,帮助您更加高效地利用Linux命令行。
54 1
|
7月前
|
编译器 Linux 数据库
【C进阶】文件操作(上)--(详解、非常适合基础入门学习)(上)
【C进阶】文件操作(上)--(详解、非常适合基础入门学习)(上)
|
7月前
|
人工智能
【C进阶】文件操作(上)--(详解、非常适合基础入门学习)(中)
【C进阶】文件操作(上)--(详解、非常适合基础入门学习)(中)
|
5天前
|
C++ 数据格式
【C++】C++中的【文件IO流】使用指南 [手把手代码演示] & [小白秒懂]
【C++】C++中的【文件IO流】使用指南 [手把手代码演示] & [小白秒懂]
【C++】C++中的【文件IO流】使用指南 [手把手代码演示] & [小白秒懂]
|
7月前
|
API C语言
【C进阶】文件操作(下)(详解--适合初学者入门)(下)
【C进阶】文件操作(下)(详解--适合初学者入门)(下)
|
7月前
|
存储 编译器 数据格式
【C进阶】文件操作(下)(详解--适合初学者入门)(中)
【C进阶】文件操作(下)(详解--适合初学者入门)(中)
|
10月前
|
C语言
C进阶:文件的基础操作(三)
C进阶:文件的基础操作(三)
44 0
|
10月前
|
存储
C进阶:文件的基础操作(二)
C进阶:文件的基础操作(二)
35 0
|
前端开发 Linux
前端可以了解一下:最基础的八个linux命令
列出当前目录下的子目录和文件 ( i 显示inode号,l显示文件权限、所有者、文件大小、文件名称)
100 0