【C语言】——文件操作

本文详细介绍了文件操作的基本概念,如文件的必要性、类型划分、文件指针与打开关闭方法(fopen/fclose),以及顺序读写(fgetc/fputc/fgets/fputs/fscanf/fprintf)的使用。深入探讨了随机读写(fseek/ftell/rewind)和文本文件与二进制文件的区别,同时提供了文件读取结束的正确判断技巧。
摘要由CSDN通过智能技术生成

目录

1.有必要使用文件吗?

2.什么是文件?

2.1程序文件

2.2数据文件

2.3文件名

3.文件的打开和关闭

3.1文件指针

3.2文件打开和关闭的具体方法

1.fopen

2.fclose

4.文件的读写

4.1顺序读写

1.fgetc

2.fputc

 3.fgets

4.fputs 

 5.fscanf

6.fprintf

7.fread

8.fwrite

4.2对比一组函数(scanf,fscanf,sscanf——printf,fprintf,sprintf)

1.sprintf

 2.sscanf

4.3随机读写

1.fseek

2.ftell

3.rewind(重绕)(重置)

5.文本文件和二级制文件

6.文件读取结束的判定

7.文件缓冲区

1.有必要使用文件吗?

       当程序运行之后,此时数据保存在内存中,当退出运行程序的时候,产生的数据就会在内存上消失,为了保存运行时的要储存的数据,以便于下一次运行程序的时候能够调用上一次运行程序时产生的数据,我们采用了文件操作

2.什么是文件?

磁盘上的文件就是文件,文件操作就是去生成或者调用这些文件,这些文件一般可以分为,程序文件和数据文件。

2.1程序文件

        程序文件包括:

        1.源程序文件(后缀为.c)
        2.目标文件(windows环境后缀为.obj)
        3.可执行程序(windows环境 后缀为.exe)

2.2数据文件

        文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。
        可执行程序输出的不一定在屏幕上,也可以是输出一个文件,存放在磁盘上。

2.3文件名

一个文件要有 唯一的一个文件标识(文件名),以便用户识别和引用

文件名包含三个部分:

        1.文件路径:C:\code

        2.文件名主干:test

        3.文件后缀:.txt

        例如:C:\code\test.txt

3.文件的打开和关闭

3.1文件指针

        缓冲文件系统中,关键的概念是“ 文件类型指针 ,简称 文件指针 。 每个被使用的文件都在内

存中开辟了一个相应的 文件信息区 ,用来存放文件的相关信息(如文件的名字,文件状态及文件当
前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是有系统 声明的,
取名 FILE.
struct _iobuf {
        char *_ptr;
        int   _cnt;
        char *_base;
        int   _flag;
        int   _file;
        int   _charbuf;
        int   _bufsiz;
        char *_tmpfname;
       };
typedef struct _iobuf FILE;//FILE就是一个结构体的类型,里面的成员变量存的是文件的一些文件信息
        不同的C编译器的FILE类型包含的内容不完全相同,但是大同小异。

每当打开一个文件的时候,系统会根据文件的情况自动创建一个FILE结构的变量,并填充其中的信
息, 使用者不必关心FILE类型的变量如何创建的,只需要知道它是会被创建好就行。
        一般都是通过一个FILE的指针来维护这个FILE结构的变量,这样使用起来更加方便。

下面我们可以创建一个FILE*的指针变量:
FILE *pf;//pf就是一个文件指针类型的变量
        定义pf 是一个指向 FILE 类型数据的指针变量。可以使 pf 指向某个文件的文件信息区(是一个结构体变量)。
通过该文件信息区中的信息就能够访问该文件。
也就是说, 通过文件指针变量能够找到与它关联的文件。
比如:

3.2文件打开和关闭的具体方法

去访问一个文件的时候,首先要打开这个文件(fopen),其次要对这些文件进行读或者写的操作,最后会试着去关闭这个文件(fclose)

接下来详细探讨一下如何对文件进行打开、读写和关闭的操作

1.fopen

FILE * fopen ( const char * filename, const char * mode );

  函数的含义:

filename:fopen打开的文件名字

mode:fopen打开的文件的方式(可读还是可写)

返回值:如果打开成功返回的是该文件的文件指针,如果打开失败返回NULL指针

mode分为以下几种

fopen打开文件文件的mode
“r” (只读)
为了输入数据,打开一个已经存在的文本文件 出错
“w” (只写)
为了输出数据,打开一个文本文件 建立一个新的文件
“a” (追加)
向文本文件尾添加数据
建立一个新的文件
“rb” (只读)
为了输入数据,打开一个二进制文件
出错
“wb” (只写)
为了输出数据,打开一个二进制文件
建立一个新的文件
“ab” (追加)
向一个二进制文件尾添加数据
</
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

待己以诚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值