C文件操作进阶

本文详细介绍了C语言中文件操作的基本步骤,包括fopen、fwrite、fseek和fread等函数的使用方法,以及各种模式参数的含义。通过具体实例,帮助读者掌握如何正确打开、读写和定位文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  文件操作基本步骤:首先使用fopen获得指向文件的指针,

 

1.fopen

  作用:打开一个文件,返回指向该文件的指针  

  函数原型:FILE * fopen(const char *path,cost char *mode)  

  参数说明:第一个参数为欲打开文件的文件路径及文件名,第二个参数表示对文件的打开方式

  返回值:文件打开了,返回一个指向该打开文件的指针(FILE结构);文件打开失败,错误上存error code(错误代码)

注:mode有以下值:

 

r:只读方式打开,文件必须存在

 

r+:可读写,必须存在

 

rb+:打开二进制文件,可以读写

 

rt+:打开文本文件,可读写

 

w:只写,文件存在则文件长度清0,文件不存在则建立该文件

 

w+:可读写,文件存在则首先将文件清空再写入,文件不存在则建立该文件

 

a:附加方式打开只写,不存在建立该文件,存在写入的数据加到文件尾,EOF符保留

 

a+:附加方式打开可读写,不存在建立该文件,存在写入的数据加到文件尾,EOF符不保留

 

wb:打开二进制文件,只写

 

wb+:打开或建立二进制文件,可读写

 

wt+:打开或建立文本文件,可读写

 

at+:打开文本文件,可读写,写的数据加在文本末尾

 

ab+:打开二进制文件,可读写,写的数据加在文件末尾

 

由mode字符可知,上述如r、w、a在其后都可以加一个b,表示以二进制形式打开文件

注意:在fopen操作后要进行判断,是否文件打开,文件真正打开了才能进行后面的读或写操作,如有错误要进行错误处理

例:FILE *fp=fopen("testfile","w+")

 

2.fwrite

  作用:向文件写入一个数据块

  函数原型:size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);

  参数说明:第一个参数为指向文件输出地址的指针,参数二表示写入的每个数据路块的字节数,参数三表示要写入size字节数据块的个数,参数四为指向目标文件的指针。  

  返回值:实际写入的数据块的个数。

说明:写入到文件的哪里? 这个与文件的打开模式有关,如果是w+,则是从file pointer指向的地址开始写,替换掉之后的内容,文件的长度可以不变,stream的位置移动count个数;如果是a+,则从文件的末尾开始添加,文件长度加大。
fseek对此函数有作用,但是fwrite[1]函数写到用户空间缓冲区,并未同步到文件中,所以修改后要将内存与文件同步可以用fflush(FILE *fp)函数同步。
 

 3.fseek 

  作用:重定位文件内部指针

  函数原型:int fseek(FILE *stream,long offset,int framewhere)

  参数说明:第一个为文件指针,第二个是指针的偏移量,第三个是指针偏移起始位置

  返回值:成功则返回0,否则返回其他值

  偏移量的三种取值: SEEK_SET  文件头

            SEEK_CUR  当前指针位置

            SEEK_END  文件尾

 

4.fread

  作用:读取文件数据块(注意:文件读取后文件内指针会随之移动

 

 

 

 

 

memset

  函数原型:void *memset(void *s,int c,size_t n)
  作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。

 

sizeof

  作用:返回类型所占的字节数

 

转载于:https://www.cnblogs.com/2017Crown/p/7181407.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值