admin管理员组文章数量:1794759
fread和fwirte函数
一、fread函数 ——>从文件流中读取二进制数据到ptr指向的数组
从流(二进制文件)中读取数据块
- ptr:指向大小至少为 (size*count) 字节的内存块的指针,转换为 void*。
- size:要读取的每个元素的大小(以字节为单位)
- count:要读取的元素个数,每个元素的大小为字节
- stream:指向指定输入流的 FILE 对象的指针。
- 返回值:如果成功,读取的总字节数为 (size*count),返回成功读取的元素总数。 如果此数字与 count 参数不同,则表示读取时发生读取错误或到达文件末尾。在这两种情况下,可以分别使用 ferror 和 feof 进行检查。
- 如果 size 或 count 为零,则该函数返回零,并且 ptr 指向的流状态和内容保持不变。
即从流中读取 count 个元素的数组,每个元素的大小为size,并将它们存储在 ptr 指定的内存块中。
代码语言:javascript代码运行次数:0运行复制#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE* pFile = NULL;
long lSize;
char* buffer;
size_t result;
pFile = fopen("myfile.bin", "rb");
if (pFile == NULL)
{
fputs("File error", stderr);
exit(1);
}
// obtain file size:
fseek(pFile, 0, SEEK_END);
lSize = ftell(pFile);
rewind(pFile);
// allocate memory to contain the whole file:
buffer = (char*)malloc(sizeof(char) * lSize);
if (buffer == NULL)
{
fputs("Memory error", stderr);
exit(2);
}
// copy the file into the buffer:
result = fread(buffer, 1, lSize, pFile);
if (result != lSize)
{
fputs("Reading error", stderr);
exit(3);
}
fclose(pFile);
free(buffer);
return 0;
}
二、fwrite函数 ——>将ptr指向的数组的内容写入到文件流
fwrite和fread的理解差不多,这里就不多做阐述啦!
代码语言:javascript代码运行次数:0运行复制#include <stdio.h>
int main()
{
FILE* pFile = NULL;
char buffer[] = { 'x' , 'y' , 'z' };
pFile = fopen("myfile.bin", "wb");
fwrite(buffer, sizeof(char), sizeof(buffer), pFile);
fclose(pFile);
return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-10-23,如有侵权请联系 cloudcommunity@tencent 删除数组fread二进制函数内存本文标签: fread和fwirte函数
版权声明:本文标题:fread和fwirte函数 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1754645943a1704726.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论