最近工作与读取、存储文件打交道比较多,特记录一下。
C
注意包含头文件:#include<stdio.h>
fopen
函数定义:FILE * fopen ( const char * path, const char * mode )
返回值:如果文件成功打开,返回指向FILE对象的指针,否则返回NULL
参数:path
为文件路径;mode
为打开文件方式,具体如下表:
mode | 功能 |
---|---|
"r" | read 打开只读文件,文件必须存在 |
"w" | write 打开只写文件,如果文件已存在,则将已有文件内容舍弃,按照空文件对待 |
"rb" | read binary 只读打开二进制文件,文件必须存在 |
"wb" | write binary 只写打开二进制文件,如果文件已存在,则将已有文件内容舍弃,按照空文件对待 |
"r+" | read/update 打开可读写文件,文件必须存在 |
"w+" | write/update 打开可读写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件 |
"a" | append 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾 |
fread
函数定义:size_t fread(void *buffer, size_t size, size_t count, FILE *file)
返回值:成功读取的对象个数,若出现错误,则可能小于count
参数:buffer
为读取出的数据存放地址;size
为块长度,count
为块数量,实际读取字节数为 size * count
,file
为指向FILE
类型的指针
fwrite
函数定义:size_t fwrite(const void *buffer, size_t size, size_t count, FILE *file)
返回值:成功写入的对象个数,若出现错误,则可能小于count
参数:buffer
为待写入数据的存放地址;size
为块长度,count
为块数量,实际写入字节数为 size * count
,file
为指向FILE
类型的指针
fclose
函数定义:int fclose(FILE *stream)
返回值:如果流成功关闭,则该方法返回零。如果失败,则返回 EOF
示例
#define OUT_FEATURE_SIZE 1024
int main()
{
printf("fopen begin\n");
float feature[OUT_FEATURE_SIZE]; // 特征数组
FILE *fp;
fp = fopen("feature.txt", "rb"); // 打开二进制特征文件
fread(feature, OUT_FEATURE_SIZE * sizeof(float), 1, fp); // 将 txt 文件中存储的特征读入到 float 数组中
fclose(fp);
printf("fopen end\n");
return 0;
}
C++
注意包含头文件:#include <fstream>