C语言——文件操作

        在程序设计中,一般把文件分为两种,一种是程序文件,另一种是数据文件。在本章中我们讨论的是数据文件。

1、文件的打开和关闭

1.1、文件指针

        在使用文件时,每个被使用的文件都会在内存中开辟一块空间,里面存放着文件名,文件的位置等信息,这些信息是保存在一个结构体中,这个结构体名字叫FILE。我们不需要知道结构体内部有什么东西,我们只要知道怎么使用它。

        一般情况下,我们都是创建一个指针变量FEILE。

FILE* = pf;

1.2、fopen和fclose

在使用文件前,我们需要用fopen打开文件。

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

filename:该参数为想打开文件的字符串

mode :该参数为文件的打开方式,必须是字符串

  • "r":输入数据,打开指定文件,该文件必须存在
  • "w":输出数据,打开指定文件,文件存在时丢弃文件内容视为新文件;如果不存在,创建新文件
  • "a":输出数据,打开指定文件,向文件尾部追加数据,如果文件不存在创建新文件
  • "r+":输入\输出数据,打开指定文件,该文件必须存在,输出数据时从头覆盖
  • "w+":输入\输出数据,打开指定文件,文件存在时丢弃文件内容视为新文件;如果不存在,创建新文件
  • "a+":输入\输出数据,打开指定文件,向文件尾部追加数据,如果文件不存在创建新文件
  • "r\w\a b +":以二进制的形式完成上面的操作

fclose关闭文件

int fclose ( FILE * stream );

stream:想要关闭的文件

在文件正常关闭时返回零,如果失败,返回EOF

FILE* pf;\\创建文件指针
pf = fopen("text.txt", "w");\\以只写方式打开文件

\\对文件操作

{
    ···;
}
fclose(pf);\\关闭文件
pf = NULL;\\避免野指针

2、文件顺序读写

以下是一些可以读\写文件的函数

函数名功能适用于
fgetc字符输入所有输入流
fputc字符输出所有输出流
fgets

字符串输入

所有输入流
fputs字符串输出所有输出流
fscanf格式化输入所有输入流
fprintf格式化输出所有输出流
fread二进制输入文件
fwrite二进制输出文件

        上面的一些函数大多数都见过相似的,scanf,printf等,但这些函数只能通过stdin输入和stdout输出,而fprintf和fscanf可以用任意输出流/输入流。

        C语言默认开启的三个输出流

  • stdin--标准输入流--键盘
  • stdout--标准输出流--屏幕
  • stderr--标准错误流--屏幕

3.文件随机读写

现在有一个文件,里面内容是“abcdefg”,得到指向d的指针可以用fgetc一个一个挪,但也可以使用fseek函数。

3.1、fseek

int fseek ( FILE * stream, long int offset, int origin );

stream:文件指针

offset: 相对于origin的偏移量,向前偏移为正数,向后偏移为负数,单位为字节

origin:一般为三个常量

SEEK_SET文件的开头
SEEK_CUR文件指针的当前位置
SEEK_END文件的末尾

3.2、ftell

long int ftell ( FILE * stream );

这个函数的作用是,返回文件指针相对于起始地址的偏移量

3.3、rewind

void rewind ( FILE * stream );

这个函数的作用是,将文件指针指向文件起始位置

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值