文件IO:
FILE *fopen(const char *path, const char *mode);
功能:打开或创建文件
path:文件的路径
mode:打开模式
r 以只读权限打开文件,如果文件不存在则打开失败
r+ 在r的基础上增加写权限
w 以只写权限打开文件,如果文件不存在则新建,如果文件存在则清空
w+ 在w的基础上增加读权限
a 以只写权限打开文件,如果文件不存在则新建,如果文件存在则不清空,新写入的数据在文件的末尾
a+ 在a的基础上增加读权限
以上方式以文本形式操作文件,在它们基础上加b表示以二进制方式操作文件
返回值:结构指针,也称为文件指针,不需要关心它的成员,只需要知道它是操作文件的凭证,如果值是NULL表示文件操作失败
二进制方式读写文件:
size_t fwrite(const void *ptr,size_t size,size_t nmemb,FILE *stream);
功能:把内存中的数据写入到文件中
ptr:内存首地址
size:一次写入多少个字节
nmemb:写入多少次
stream:文件指针,fopen的返回值
返回值:成功写入的次数
练习1:定义一个教师结构体变量并初始化,以二进制形式写入到文件中
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
功能:从文件中读取数据到内存中
ptr:存储从文件中读取的数据内存首地址
size:一次读取的字节数
nmemb:读取多少次
stream:文件指针,fopen的返回值
返回值:成功读取到的次数
练习2:从文件中读取数据到一个教师结构体变量中,并显示
文本方式读写文件:
int fprintf(FILE *stream, const char *format, ...);
功能:以文本形式写入数据到文件中
stream:要写入的文件指针
format:占位符和提示信息
... :变量名列表
返回值:成功写入的字节数
int fscanf(FILE *stream, const char *format, ...);
功能:从文件中读取数据到变量中
stream:要读取的文件指针
format:占位符
...:变量地址列表
返回值:成功读取到的变量个数
int fclose(FILE *fp);
功能:关闭文件