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; // 末尾添0
fclose(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功能正常。
2111

被折叠的 条评论
为什么被折叠?



