C语言文件操作详解(2)

2025博客之星年度评选已开启 10w+人浏览 1.6k人参与


前言

这一章主要介绍文件顺序读写的各种函数和文件的随机读写和文件缓存区。制作不易求点个关注。


一、文件的顺序读写

顺序读写函数介绍:

函数名功能适用对象
fgetc字符输入函数所有输入流
fputc字符输出函数所有输出流
fgets文本行输入函数所有输入流
fputs文本行输出函数所有输出流
fscanf格式化输入函数所有输入流
fprintf格式化输出函数所有输出流
fread二进制输入文件输入流
fwrite二进制输出文件输出流

1.fgetc和fputc

fgetc

字符输入函数(文件输入到程序)
语法形式:
int fgetc(FILE * stream);
功能:从stream指向的流中读取一个字符,光标换到下一个
返回值:已处于文件末尾时,返回EOF

fputc

字符输出函数(程序输出文件)
语法形式:
int fputc(int character ,FILE *atream);
character:写入的字符
功能:将指定的字符写入到指定的输出流
返回值:成功返回写入的字符(int形式),失败返回EOF,错误指示器被设置(feffor);

2.feof和ferror

1.feof

feof是检测到指针指向的流是否遇到文件末尾,如果读取到文件末尾这时会在流上设置文件结束指示符。
如果有则返回非0的值,没有则返回0。

2.ferror

发生了读写错误,文件读取就会错误。
会设置一个错误指示符,如果ferror检测到会返回一个非0的值,没有则返回0。

3.fgets和fputs

1.fgets

语法形式:
char * fgets(char * str, int num , FILE * stream);
stream:从这里读取字符串,到/n或者文件末尾或指定数结束。
num:最大读取字符数(包括\0),实际读取num-1。
str:用于储存读到的字符串。

2.fputs

语法形式:
int fputs(const char *str,FILE * stream);
将参数str指向的字符串写入到参数stream中(不含\0);
str:指向了要写入的字符串 ,成功时返回非负整数 ,失败时返回EOF,可以使用ferror()检查错误原因。

4.fscanf和fprintf

1.fscanf

语法形式:
int fscanf(FILE * stream,const char * format ……);
与scanf相比较多了一个FILE * stream,表示要读取的文件。
返回值:成功读取几项数据返回几。
发生错误,返回EOF,设置错误指示符。
读到末尾,返回EOF,文件结束指示符。

2.fprintf

语法形式:
int fprintf(FILE * stream,const char * format ……);
与printf相比多一个FILE * stream,表示要读取的文件流。
返回值:成功返回写入的字符总数。失败,先设置错误流指示器,再返回负值。

5.fwrite和fread

1.fread

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

ptr:指向内存块的指针,用于存储读取的数据。
size:每个数据项的字节大小。
nmemb:要读取的数据项数量。
stream:指向 FILE 对象的指针,通常由 fopen 打开。
将数据块从stream文件中读取,存储到ptr中。
返回值:
成功时返回实际读取的数据项数量
若返回值与 nmemb 不同,可能到达文件末尾或发生错误,需结合 feof 或 ferror 检查。

2.fwrite

语法形式:

size_t fwrite(void *ptr, size_t size, size_t nmemb, FILE *stream);

ptr:指向内存块的指针,用于写入的数据块。
size:每个数据项的字节大小。
nmemb:要读取的数据项数量。
stream:指向 FILE 对象的指针,通常由 fopen 打开。
==函数用于将数据块写入到stream指向的文件流中,以二进制的形式写入。 ==
返回值:
函数返回成功写入的数据项数量(nmemb)。若返回值小于nmemb,可能表示写入过程中发生错误或到达文件末尾。

6.sscanf和sprintf

1.sscanf

语法形式:
int sscanf(const char * str,const char * format ……);
str:要解析的源字符串
== 功能:从字符串中读取格式化数据==

2.sprintf

语法形式:
int sprintf(const char * str,const char * format ……);
str:指向字符数组的指针,用于储存生成的字符串。
将格式化的数据写入到字符数组

二、文件的随机读写

1.fssek

语法形式:
int fseek ( FILE * stream, long int offset, int origin );
offset:偏移数,向右为正,向左为负。
origin :
SEEK_SET:文件开始位置
SEEK_CUR:文件指示器当前位置
SEEK_END:文件末尾
根据文件指针的位置和偏移量来定位文件指针(文件光标的内容)。

2.ftell和rewind

1.ftell

语法形式:
long int ftell ( FILE * stream);
返回文件指针相对于起始位置的偏移量。

rewind

语法形式:
void rewind ( FILE * stream );
让文件指针回到起始位置。

三、文件缓冲区

ANSI是采用“缓冲文件系统”处理数据文件的。所谓的缓冲文件系统就是系统自动地在内存中为程序的每一个正在使用的文件开辟一块“文件缓冲区
在这里插入图片描述
据输入/输出缓冲区装满才发送对应文件/内存

fflush

语法形式:
int fflush(FILE * stre);
stre:指向的文件流的指针。
功能: 可以强制刷新缓冲区。
返回值:
成功返回0,失败返回EOF。
输入:由具体实现。
输出:未写入的数据立即写入文件。


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值