首先是fopen
FILE* fopen(const char* path,const char* mode)
返回的是一个结构体指针,指向的是一个结构体对象,不能直接使用,要交给其它函数使用
path是地址
mode:
“r”(read)以只读方式打开,文件不存在则打开失败,返回值为空
"r+"以只读写方式打开,文件不存在则打开失败,返回值为空
“w”(write)以只写方式打开,文件不存在则创建,文件存在则清空
"w+"以只读写方式打开,文件不存在则创建,文件存在则清空
“a”(app)以只写方式打开,文件不存在则创建,文件存在则追加
"a+"添加读权限
文件则分二进制文件和文本文件,二进制文件打开时二进制符号,文本文件打开则是字符
接下来说的是二进制和文本文件的读写
二进制文件
size_t fwrite(const void* ptr,size_t size,size_t nmemb,FILE* stream)
功能:从内存读取数据到文件中
ptr:用来读取数据的内存首地址
size:要读取的字节数
nmemb:要读取的字数
stream:fopen的返回值
返回值是nmemb,就是实际读取到的字数
size_t fread(void* ptr,size_t size,size_t nmemb,FILE* stream)
功能:从文件读取数据到内存中
ptr:用来存放数据的内存首地址
size:要读取的字节数
nmemb:要读取的字数
stream:fopen的返回值
返回值是nmemb,就是实际存储的字数
文本文件
int fprintf(FILE* stream,const char* format,…)
功能:将数据存放到文本文件中
stream:fopen返回值
format:数据格式 例如"%s"
…,要读取的数据地址,例如 str[50]
int fscanf(FILE* stream,const char* format,…)
功能:将数据从文件中读取
stream:fopen返回值
format:数据格式 例如"%s"
…,要存放的数据地址,例如 str[50]