C文件操作

在之前的学习中我们一直使用的是系统临时分配的内存空间,而这也就导致了在应用结束时,用户所拥有的数据全部将会丢失,所以,我们需要将数据存储在硬盘中;

一、怎么存储到硬盘

首先我们需要知道数据在硬盘中存储都是以文件的形式存储,例如文本文件后缀.txt、音乐文件.mp3等等这都是以文件形式存储

一般分为两大类:程序文件例如:源程序文件(.c)目标文件(windows环境.obj)可执行程序文件(windows环境.exe)

数据文件:文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件

接下来我们对数据文件进行学习

二、文件的打开与关闭

  1. 文件指针

在学习中最关键的是文件类型指针,简称“文件指针”,每个被使用的文件都会在内存中开辟相对应的文件信息区,用来存放文件的相关信息,(如:文件的名字,文件状态,以及文件的位置,)这些信息是保存在一个结构体变量中,该结构体类型是有系统声明的,取名FILE;

  1. 创建文件指针

FILE* fp;//文件指针变量

定义一个fp指针变量是指向FILE类型的数据,可以使fp指向某个文件信息区,通过该文件信息区就可以访问到该文件,即通过fp可以访问到文件。

  1. 文件打开与文件关闭

在读写文件之前,要先打开文件,在编写程序的时候,打开一个文件都会返回一个FILE*的文件指针指向该指针。

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

当所有操作完成的时候,需要将文件关闭

int fclose( FILE* stream ) ;

  1. 文件打开类型

文件使用式 含义 如果指定文件不存在

“r”(只读) 为了输入数据,打开一个以及存在的文本文件 出错

"w"(只写) 为了输出数据,打开一个文本文件 建立一个新的文件

"a" (追加) 向文本文件尾添加数据 建立一个新的文件

"r+"(读写) 为了读和写,打开一个文本文件 出错

"w+"(读写) 为了读和写,建立一个新的文件 建立一个新的文件

"a+"(读写) 打开一个文件,在文件尾进行读写 建立一个新的文件

在以上基础上如若是对二进制文件进行操作,只需在对应使用方式的后面加b即可,例如:"ab"在一个二进制文件尾添加数据

三、文件的顺序读写

1.字符输入函数 fgetc int fgetc(FILE*stream); 从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。stream -- 这是指向 FILE 对象的指针

2.字符输出函数fputc int fputc(intc,FILE*stream); 把参数 char 指定的字符(一个无符号字符)写入到指定的流 stream 中,并把位置标识符往前移动,char -- 这是要被写入的字符。该字符以其对应的 int 值进行传递。stream -- 这是指向 FILE 对象的指针,该 FILE 对象标识了要被写入字符的流

3.文本行输入函数fgets fgets(char *str , int size, FILE *fp); fgets()将文件中的内容读取到char*指向的空间中,读取多少取决于变量size大小,或者读取到换行符时,或者到达文件末尾时,它会停止

4.文本行输出函数fputs fputs(char *str,int size,FILE*fp); fputs()将char*指向的内容保存到文件中,读取多少取决于size大小,

5.格式化输入函数fscanf int fscanf ( FILE * stream, const char * format, ... );函数其作用是从文件流中读取数据到指针指向的空间返回值为读取的字节数

6.格式化输出函数fprintf int fprintf( FILE *stream, const char *format [, argument ]...);函数作用是从指针指向的空间读取数据到文件中返回值是存到文件的字节数

7.二进制输入输出fread()/fwrite()

size_t fread( void *buffer, size_t size, size_t count, FILE *stream );

函数作用是从stream流中读取数据到buffer指向的空间,读取size大小的count个元素;返回值为成功读取的个数,读取失败或到文件末尾则与需要的总数不同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值