c语言文件操作笔记【自用·长期更新】

c语言文件操作的概念和方法

主要操作时控制一个FILE*型文件指针,FILE是一个结构体,改变此结构体的值比如相对位置等,可以达到对文件的操作。

库函数

包含头文件:

#include <stdio.h>

打开和关闭文件:

FILE *fopen(const char *filename, const char *mode);
int fclose(FILE *stream);
  • filename – 这是 C 字符串,包含了要打开的文件名称。

  • mode – 这是 C 字符串,包含了文件访问模式,模式如下:

    “r” :打开一个用于读取的文件。该文件必须存在。
    “w” :创建一个用于写入的空文件。如果文件名称与已存在的文件相同,则会删除已有文件的内容,文件被视为一个新的空文件。
    “a” :追加到一个文件。写操作向文件末尾追加数据。如果文件不存在,则创建文件。
    “r+” :打开一个用于更新的文件,可读取也可写入。该文件必须存在。 “w+” 创建一个用于读写的空文件。
    “a+” :打开一个用于读取和追加的文件。

返回值: 该函数返回一个 FILE 指针。否则返回 NULL,且设置全局变量 errno 来标识错误。

  • stream – 这是指向 FILE 对象的指针,该 FILE 对象指定了要被关闭的流。

返回值:如果流成功关闭,则该方法返回零。如果失败,则返回 EOF。

格式化读写:

int fscanf(FILE *stream, const char *format, ...);
int fprintf(FILE *stream, const char *format, ...);
  • stream – 这是指向 FILE 对象的指针,该 FILE 对象标识了流。
  • format – 这是 C 字符串,包含了以下各项中的一个或多个:空格字符、非空格字符 和 format 说明符。

读写数据块:

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
  • ptr – 这是指向带有最小尺寸 size*nmemb 字节的内存块的指针。
  • size – 这是要读取(写入)的每个元素的大小,以字节为单位。
  • nmemb – 这是元素的个数,每个元素的大小为 size 字节。
  • stream – 这是指向 FILE 对象的指针,该 FILE 对象指定了一个输入(输出)流。
    fread和fwrite函数整字节地读取文件的二进制格式数据,此时可以用一个char型的缓冲区保存这些数据,比如:
char buf[1024];
fread(buf,1024,1,fp);

但是这些数据却不是以char类型或编码方式组织的,这些数据不过是占用了以buf为首地址长度为1024字节的内存块,所以不能使用类似strcpy或strlen等处理字符串的函数来处理这个buf,如果想使用这类针对char类型的函数处理得到某些结果,往往南辕北辙,因为这些结果已经被修改或者转换。但是仍然有办法在有限的范围内使用buf这块数据,比如拷贝等:

char buffer[1024];
for(int i=0;i<1024;i++){
	buffer[i]=buf[i];
}

在这里buffer经过逐个访问内存单元拷贝得到的数据与buf并无二致。

重置文件指针到文件开头位置:

void rewind(FILE *stream);
  • stream – 这是指向 FILE 对象的指针,该 FILE 对象标识了流。

返回文件指针的位置:

long int ftell(FILE *stream);
  • stream – 这是指向 FILE 对象的指针,该 FILE 对象标识了流。

返回值:该函数返回位置标识符的当前值。如果发生错误,则返回 -1L,全局变量 errno 被设置为一个正值。

判断是否到达文件末尾:

int feof(FILE *stream);
  • stream – 这是指向 FILE 对象的指针,该 FILE 对象标识了流。

返回值:当设置了与流关联的文件结束标识符时,该函数返回一个非零值,否则返回零。

随机访问文件位置:

int fseek(FILE *stream, long int offset, int whence);
  • stream – 这是指向 FILE 对象的指针,该 FILE 对象标识了流。

  • offset – 这是相对 whence 的偏移量,以字节为单位。

  • whence – 这是表示开始添加偏移 offset 的位置。它一般指定为下列常量之一:

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

返回值:如果成功,则该函数返回零,否则返回非零值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值