C文件读写(一)

刷牛客网的C++专项练习时,遇到C文件读写的题目基本都是白给,这块知识是盲区。

c语言文件读写相关函数及文件指针FILE *的定义都在stdio.h头文件里,以下所有操作都需要#include <stdio.h>

一、fopen函数

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

fopen()返回的是一个文件指针,第一个参数是文件名,第二个参数是打开模式,常见模式有:

模式描述
r打开一个已有的文本文件,允许读取文件。
w打开一个文本文件,允许写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会从文件的开头写入内容。如果文件存在,则该会被截断为零长度,重新写入。
a打开一个文本文件,以追加模式写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会在已有的文件内容中追加内容。
r+打开一个文本文件,允许读写文件。
w+打开一个文本文件,允许读写文件。如果文件已存在,则文件会被截断为零长度,如果文件不存在,则会创建一个新文件。
a+打开一个文本文件,允许读写文件。如果文件不存在,则会创建一个新文件。读取会从文件的开头开始,写入则只能是追加模式。

如果文本是二进制格式,需要在模式后加"b"

"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"
FILE *fp;
//以只读模式打开已有的文本/二进制文件
fp = fopen("txt_file", "r")
fp = fopen("bin_file", "rb")
//以写入模式打开文本/二进制文件
fp = fopen("txt_file", "w")
fp = fopen("bin_file", "wb")

如果以只读模式打开的文件不存在,则返回NULL,表示打开失败

二、flose函数

int  flose(FILE *stream)返回0表示关闭成功,否则返回EOF

三、feof函数

 int feof(FILE * stream),侦测是否读取到了文件尾,如果到了文件尾返回非零整数,其他情况返回0

四、ftell

 long ftell(FILE * stream),取得文件流目前的读写位置,当调用成功时则返回目前的读写位置,若有错误则返回-1

五、fseek

 int  fseek(FILE * stream,long offset,int whence),用来移动文件流的读写位置

where取值

SEEK_SET从距文件开头offset位移量为新的读写位置

SEEK_CUR 以目前的读写位置往后增加offset个位移量
SEEK_END将读写位置指向文件尾后再增加offset个位移量

//将fp移动到距离开头100字节处
fseek(fp, 100L, SEEK_SET);
//将fp从当前位置向后移动50字节
fseek(fp, 50L, SEEK_CUR);
//将fp从文件尾回移50字节
fseek(fp, -50L, SEEK_END);

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值