✨✨ 欢迎大家来到莉莉的博文✨✨
🎈🎈养成好习惯,先赞后看哦~🎈🎈
一、fread函数 ——>从文件流中读取二进制数据到ptr指向的数组
从流(二进制文件)中读取数据块
- ptr:指向大小至少为 (size*count) 字节的内存块的指针,转换为 void*。
- size:要读取的每个元素的大小(以字节为单位)
- count:要读取的元素个数,每个元素的大小为字节
- stream:指向指定输入流的 FILE 对象的指针。
返回值:如果成功,读取的总字节数为 (size*count),返回成功读取的元素总数。
如果此数字与 count 参数不同,则表示读取时发生读取错误或到达文件末尾。在这两种情况下,可以分别使用 ferror 和 feof 进行检查。如果 size 或 count 为零,则该函数返回零,并且 ptr 指向的流状态和内容保持不变。
即从流中读取 count 个元素的数组,每个元素的大小为size,并将它们存储在 ptr 指定的内存块中。
#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的理解差不多,这里就不多做阐述啦!
#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; }