文件操作

1.C语言中的文件是什么

一般指存储在外部介质上的数据集合(如:txt\bmp\jpg\exe\rmvb)
这些文件各有用途,我们通常把它们存放在磁盘或者可移动盘等介质中。
文件是一段数据的集合,这些数据可以有序或无序。操作系统就是以文件为单位对数据进行管理的。也就是说,要访问外部介质上的数据,必须先按照文件名进行查找,然后从该文件中读取数据。
要想写数据到外部介质,必须建立一个文件,然后再写入。

1.1文件一般包括三要素:文件路径 、文件名 、后缀

数据的输入和输出几乎伴随着每个C语言程序,所为输入就是从“源端”获取数据,所为输出可以理解为向“终端”写入数据。

2.流的概念及分类

程序绕过具体设备,直接与该"标准逻辑设备"进行交互,这样就为程序设计者提供了一个不依赖于任何具体I/O设备的统一操作接口,通常把抽象出来的"标准逻辑设备"或"标准文件"称作"流"。
把任意I/O设备,转换成逻辑意义上的标准I/O设备或标准文件的过程,并不需要程序设计者感知和处理,是由标准I/O系统自动转换完成的。故可以认为,任意输入的源端和任意输出的终端均对应一个"流"。

  • 流按方向分为输入流和输出流。从文件获取数据的流称为输入流,向文件输出数据称为输出流
  • 流按数据形式分为文本流和二进制流,文本流是ASCII码字符序列,而二进制流是字节序列
  • 流是一种抽象的概念,负责在数据的生产者和数据的使用者之间建立联系,并管理数据的流动。
    在这里插入图片描述

3.C语言操作文件分为三步

(1)打开文件 (2)读写文件 (3)关闭文件

3.1 打开文件函数原型: FILE * fopen(const char * filename,const char * mode);
filename: 文件名,包括路径,如果不显示含有路径,则表示当前路径。
mode: 文件打开模式,指出对该文件可进行的操作。
在这里插入图片描述
3.2 关闭函数fclose的原型: int fclose(FILE * stream);
函数参数
stream:指向要关闭流对象的指针

3.3 字符串格式化函数原型 int sprintf(char * str,const char * format,…);
str: 指向缓冲区指针,缓冲区足够大
format: 格式化字符串,该字符串遵循与printf中的格式相同的规范

3.4 格式化写入函数 int fprintf(FILE * stream,const char * format,…);
输出函数 int printf(const char * format,…);

3.5 从流中读取格式化数据函数 int fscanf(FILE * stream,const char * format,…);
函数参数
stream: 指向文件对象的指针,该对象标识要从中读取数据的输入流
format: 格式化字符串,该字符串遵循与scanf中的格式相同的规范

3.6 二进制文件的读写
块数据写入函数:size_t fwrite ( const void * ptr,size_t size,size_t count, FILE * stream )
函数参数:
ptr: 这是指向要被写入的元素数组的指针
size: 这是要被写入的每个元素的大小,以字节为单位。
count: 这是元素的个数,每个元素的大小为 size 字节。
stream:这是指向FILE 对象的指针,该FILE 对象指定了一个输出流。

块数据读出函数: size t fread ( void * ptr, size t size, size t count, FILE* stream );
函数参数
ptr: 指向大小至少为(size*count)字节的内存块的指针从流中读出的数据存储到ptr指向的内存。
size: 读取元素的大小,unsigned int。
count: 读取取元素的个数。
stream:是指向FILE对象的指针,该FILE对象指定了一个输入流。

4. 文件位置

ftell: 返回当前的文件位置指示值获取文件位置指示器
fgetpos: 获取文件位置指示器
fseek: 将文件位置指示符移动到文件中的指定位置
fsetpos: 将文件位置指示器移动到文件中的指定位置
rewind: 将文件位置指示器移动到文件首

5.错误处理

clearerr: 清除错误
feof: 检查文件结尾
ferror: 检查文件错误
perror: 显示对应当前错误的字符串到 stderr

void clearerr( FILE *stream );
重置给定文件流的错误标志和EOF指示器。
参数
stream: 要重置错误标志的文件流

6.文件操作

remove : 删除文件
rename : 重命名文件
tmpfile : 返回指向临时文件的指针
tmpfile tmpfile_s (c11)

7.无格式输入\输出

fgetc getc : 从文件流获取一个字符
fgets : 从文件流获取一个字符串
fputc putc: 将一个字符写入文件流
fputs : 将一个字符串写入文件流
getchar : 从stdin读取一个字符
gets (C11 中移除)
gets_s : 从stdin读取一个字符串
putchar : 将一个字符写入stdout
puts : 将一个字符串写入 stdout
ungetc : 将一个字符送回文件流

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值