文件读写:
文件的分类:
文本文件:储存的是ASCII码的二进制 ‘2’ ‘5’ ‘5’
二进制文件:储存的是数据的补码 11111111
文件IO:
FILE *fopen(const char *path, const char *mode);
功能:打开或者创建文件
path:文件路径
mode:打开模式
r:以只读权限打开文件,如果文件不存在则打开失败
r+:在r的基础上加入写权限
w:以只写权限打开文件,如果文件存在则清空写入,如果文件不存在则创建。
w+:在w的基础上加入读权限
a:以只写权限打开文件,如果文件存在则在末尾追加写入,如果文件不存在则创建
a+:在a的基础上加入读权限
返回值:结构指针,不需要关心它的成员,只需要知道它是操作文件的凭证,也叫文件指针。
二进制方式读写:
size_t fwrite(const void *ptr,size_t size,size_t nmemb,FILE *stream);
功能:把内存中的数据写入到文件中
ptr:内存的地址
size:一次写入size字节
nmemb:写入多少次
stream:文件指针,fopen的返回值
返回值:成功写入的次数
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
功能:从文件中读取数据到内存中
ptr:内存的地址
size:一次读取size个字节
nmemb:读取多少次
stream:文件指针,fopen的返回值
返回值:成功读取的次数
文本方式读写:
int fprintf(FILE *stream, const char *format, ...);
功能:以文本形式写入数据到文件中
stream: 文件指针,fopen的返回值
format: 写入的内容、占位符
...: 变量名
返回值:成功写入的字节数
int fscanf(FILE *stream, const char *format, ...);
功能:从文件中以文本形式读取数据到变量中
stream: 文件指针,fopen的返回值
format: 要读取的内容、占位符
...: 变量的地址
返回值:成功读取的变量的个数
int fclose(FILE *fp);
功能:关闭文件
文件位置指针:
每打开一个文件都会有一个指针记录着要操作的位置,它会随着读写函数的执行而移动,r、r+、w、w+打开时位置指针都在文件的开头,以a\a+方式打开时位置指针在末尾。
如果想要随机读取文件的任何位置的数据,需要手动设置文件的位置指针。
int fseek(FILE *stream, long offset, int whence);
功能:设置文件位置指针的位置
stream:文件指针,fopen的返回值
offset:偏移值
whence:基础位置
SEEK_SET:文件开头
SEEK_CUR:当前位置
SEEK_END:文件末尾
返回值:成功返回0,失败返回-1
void rewind(FILE *stream);
功能:把文件位置指针设置到开头
long ftell(FILE *stream);
功能:获取文件位置指针的位置
返回值:第几个字节
文件相关的函数:
int feof(FILE *stream);
功能:检查文件位置是否到达末尾
返回值:文件末尾返回非零值
char *fgets(char *s, int size, FILE *stream)
功能:从文件中读取一行字符串
int fputs(const char *s, FILE *stream);
功能:写入一个字符串到文件中,会自动添加一个\n
返回值:成功写入的字符个数
int fgetc(FILE *stream);
功能:从文件中读取一个字符
int fputc(int c, FILE *stream);
功能:写入一个字符到文件
int remove(const char *pathname);
功能:删除文件
返回值:成功返回0 失败返回-1
int rename(const char *oldpath, const char *new‐path);
功能:重命名文件
返回值:成功返回0 失败返回-1