C语言文件操作详解

目录

前言

一、文本数据和二进制数据

文本数据

二进制数据

文本文件和二进制文件

二、文件的打开和关闭

文件指针

打开文件

小细节

关闭文件

举个例子

 注意事项

三、文本文件的读写

向文件中写入数据

举个例子

 运行效果

从文件中读取数据

举个例子

运行效果

注意事项

四、二进制文件的读写

向文件中写入数据 

举个例子 

从文件中读取数据

举个例子 

运行效果

五、文件定位

ftell函数

rewind函数

fseek函数

举个例子 

运行效果

 六、文件缓冲区

七、标准输入、标准输出和标准错误


前言

  1. 对计算机而言,一切皆数据,C语言源代码文件是数据、编译后的可执行程序也是数据,数据的存放方式有很多种,如内存文件数据库等,文件是极其重要的一种
  2. 根据文件中数据组织形式的不同,可以把文件分为文本文件二进制文件,C语言源代码是文本文件,编译后的可执行程序是二进制文件

一、文本数据和二进制数据

文本数据

文本数据由字符串组成,存放了每个字符的 ASCII 码值,每个字符占一个字节,每个字节存放一个字符

比如数字 123,如果用文本格式存放,数据内容是'1'、'2'、'3' 三个字符,占三个字节

表格形式

字符 '1' '2' '3'
ASCII(十进制) 49 50 51
ASCII(二进制) 00110001 00110010 00110011

二进制数据

二进制数据是字节序列,数字123的二进制表示是01111011,如果用二进制格式形式存储,char、short、int、long都可以存储123

存储方式分别如下:

char 存储

01111011

short 存储

00000000 01111011

int 存储

00000000 00000000 00000000 01111011

long 存储

00000000 00000000 00000000 00000000 00000000 00000000 00000000 01111011

文本文件和二进制文件

  1. 按文本格式存放数据的文件称为文本文件或ASCII文件,文件可以用vi和记事本打开,看到的都是ASCII字符
  2. 按二进制格式存放数据的文件称为二进制文件,如果用 vi/vim 打开二进制文件,看到的是乱码

二、文件的打开和关闭

对文件进行操作之前必须先“打开”文件,操作(读和写)完成后,再“关闭”文件

文件指针

  1. 操作文件的时候,C语言为文件分配一个信息区,该信息区包含文件描述信息、缓冲区位置、缓冲区大小、文件读写到的位置等基本信息,这些信息用一个结构体来存放(struct _IO_FILE),FILE结构体和对文件操作的库函数在 stdio.h 头文件中声明的
  2. 打开文件的时候,fopen 函数中会动态分配一个FILE结构体大小的内存空间,并把FILE结构体内存的地址作为函数的返回值,程序中用FILE结构体指针存放这个地址
  3. 关闭文件的时候,fclose 函数除了关闭文件,还会释放FILE结构体占用的内存空间
  4. FILE结构体指针习惯称为文件指针

打开文件

C语言提供的库函数 fopen 来创建一个新的文件或者打开一个已存的文件,调用fopen函数成功后,返回一个文件指针( FILE *)

函数的原型如下:

FILE *fopen( const char * filename, const char * mode );
  1. 参数 filename 是字符串,表示需要打开的文件名,可以包含目录名,如果不包含路径就表示程序运行的当前目录
  2. 参数 mode 也是字符串,表示打开文件的方式(模式),打开方式有很多种,我们来看一个表格

方式

含 义

说 明

r

只读

文件必须存在,否则打开失败

w

只写

如果文件存在,则清除原文件内容;如果文件不存在,则新建文件

a

追加只写

如果文件存在,则打开文件,如果文件不存在,则新建文件

r+

读写

文件必须存在。在只读 r 的基础上加 '+

  • 23
    点赞
  • 127
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

易点点心动

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

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

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

打赏作者

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

抵扣说明:

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

余额充值