基于C语言实现文件读取
1 C语言实现文件读取
/*** @brief 读取文件** @param file_path 文件及其路径名* @param read_buff 读取buff指针* @param buff_len buff长度* @return int 0:读取成功 -1:打开文件失败 -2:文件大小超出buff允许大小 -3:读取文件失败*/
int read_file(char *file_path, u8 *read_buff, u32 buff_len)
{FILE *file;long file_size;file = fopen(file_path, "rb+"); // 以只读方式(注意:必须是2进制方式,否则读取有误)打开文件if (file == NULL){printf("open file %s fail.\r\n", file_path);return -1;}fseek(file, 0, SEEK_END); // 将文件指针移动到文件末尾处file_size = ftell(file); // 获取文件大小if (file_size > (buff_len - 1)){printf("file size %d Byte > buff_len - 1(%d Byte).\r\n", file_size, buff_len - 1);fclose(file);return -2;}fseek(file, 0, SEEK_SET); // 将文件指针移动到文件开始处if (fread(read_buff, 1, file_size, file) != file_size) // 读取文件{printf("read file fail.\r\n");fclose(file);return -3;}read_buff[file_size] = 0x0; // 末尾添0fclose(file);return 0;
}
2 功能测试
新建1个名为file.txt的文本文件,里面随机写入一些数字及英文:
测试代码如下:
int main(void)
{u8 read_buff[10240];read_file("file.txt", read_buff, sizeof(read_buff));printf("%s", read_buff);return 0;
}
读取file.txt文件内容到read_buff数组,然后将read_buff数组内容以字符串形式打印出来。
将打印结果复制粘贴到另一个文本文件,使用比较工具比较2个文件内容是否一致:
可以看到,2个文件内容一致,说明读取文件函数read_file功能正常。