C-文件操作

C-文件操作

文件分类
  • 二进制文件:把数据的补码直接写入文件

    优点:读写速度快、安全性高

    缺点:无法查看

  • 文本文件

    优点:数据我们能看懂,方便查看是否出错

    缺点:读写速度慢、有被他人修改的风险

打开、关闭文件
FILE *fopen(const char *path, const char *mode);
功能:打开文件
path:文件的路径
mode:文件的打开模式
返回值:文件结构指针,是后续操作文件的凭证,失败则返回NULL。

int fclose(FILE *stream);
功能:关闭文件
返回值:成功返回0,失败返回-1。
注意:不能重复关闭,否则会出现double free错误,为了避免出现这种错误,在文件关闭及时把文件指针赋值为NULL,及时关闭文件可以把缓冲区中的数据写入到文件中。
文件的打开模式
"r" 以只读方式打开文本文件,如果文件不存在,或文件没有读权限则打开失败。 
"r+""r"的基础上增加了写权限。

"w" 以只写方式打开文本文件,如果文件不存在则创建,如果文件存在则清空文件的内容,如果文件存在但没有写权限,则打开失败。
"w+""w"的基础上增加了读权限。
 
"a" 以只写方式打开文本文件,如果文件不存在则创建,如果文件存在则新写入的内容追加到文件末尾,如果文件存在但没有写权限,则打开失败。
"a+""a"的基础上增加了读权限。

如果要操作二进制文件,则在以上模式的基础上增加b。
文本文件
int fprintf(FILE *stream, const char *format, ...);
功能:把若干个变量以文本格式写入到指定的文件中
stream:要写入的文件凭证,必须是fopen的返回值。
format:占位符+转义字符+提示信息
...:若干个变量
返回值:写入字符的数量

int fscanf(FILE *stream, const char *format, ...);
功能:从文件中读取数据
stream:要读取的文件
format:占位符
...:若干个变量的地址
返回值:成功读取的变量个数
二进制文件
size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);
功能:把一块内存当作数组,然后数组中的内容以二进制格式写入到文件中
ptr:数组首地址
size:数组元素的字节数
nmemb:数组的长度
stream:要写入的文件
返回值:实际写入的次数

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
功能:把二进制文件中的内容读取的数组中
ptr:要存储数据的数组首地址
size:数组元素的字节数
nmemb:数组的容量
返回值:成功读取的次数
注意:以二进制格式读写文件时,打开mode最好包含b。

int sprintf(char *str, const char *format, ...);
功能:把若干个变量转换成字符串输出到str数组中

int sscanf(const char *str, const char *format, ...);
功能:从字符串读取若干个变量
文件位置指针:

​ 文件位置指针它指向文件中即将要读取的数据,以"r"、"r+“方式打开文件,文件位置指针指向文件的开头,以"a”、"a+"方式打开文件,文件位置指针指向文件的末尾。

​ 读取数据时会从 文件位置指针指向 的地方开始读取,写入数据时也会写入到文件位置指针所指向的地址,并且它会随着读写操作自动移动。

注意:刚写完数据立即读取会失败,因为这时文件位置指针指向文件的末尾。

void rewind(FILE *stream);
功能:把文件的位置指针调整到文件的开头。

long ftell(FILE *stream);
功能:返回文件位置指针指向了文件中的第几个字节

int fseek(FILE *stream, long offset, int whence);
功能:设置文件的位置指针
stream:要设置的文件
offset:偏移值(正负整数)
whence:基础位置
	SEEK_SET 文件开头
	SEEK_CUR 当前位置
	SEEK_END 文件末尾
whence+offset就是文件指针最终设置的位置。
返回值:成功返回0,失败返回-1
文件管理:
int remove(const char *pathname);
功能:删除文件

int rename(const char *oldpath, const char *newpath);
功能:重命名文件

int truncate(const char *path, off_t length);
功能:把文件的内容设置为length字节数

char *tmpnam(char *name);
功能:生成一个与当前文件系统不重名的文件名。

int access(const char *pathname, int mode);
功能:检查文件的权限
mode:
	R_OK 读权限
	W_OK 写权限
	X_OK 执行权限
	F_OK 文件是否存在
返回值:
	检查的权限如果存在则返回0,不存在则返回-1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值