fread和fwirte函数

简介: fread和fwirte函数

✨✨ 欢迎大家来到莉莉的博文✨✨

🎈🎈养成好习惯,先赞后看哦~🎈🎈

一、fread函数 ——>从文件流中读取二进制数据到ptr指向的数组

从流(二进制文件)中读取数据块

  • ptr:指向大小至少为 (size*count) 字节的内存块的指针,转换为 void*。
  • size:要读取的每个元素的大小(以字节为单位)
  • count:要读取的元素个数,每个元素的大小为字节
  • stream:指向指定输入流的 FILE 对象的指针。
  • 返回值:如果成功,读取的总字节数为 (size*count),返回成功读取的元素总数
    如果此数字与 count 参数不同,则表示读取时发生读取错误或到达文件末尾。在这两种情况下,可以分别使用 ferrorfeof 进行检查。
  • 如果 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;
}


目录
相关文章
|
1月前
|
存储
底层文件操作的各种函数(二)------printf,fprintf,sprintf,scanf,fscanf,sscanf的对比以及文件缓冲区
底层文件操作的各种函数(二)------printf,fprintf,sprintf,scanf,fscanf,sscanf的对比以及文件缓冲区
44 2
|
5月前
|
C语言
【C语言】:浅谈函数 fscanf/sscanf 和 fprintf/sprintf
【C语言】:浅谈函数 fscanf/sscanf 和 fprintf/sprintf
50 1
|
5月前
fgets函数和fputs函数的使用
fgets函数和fputs函数的使用
|
6月前
|
机器学习/深度学习
fprintf()函数和fwrite()函数
fprintf()函数和fwrite()函数
66 1
|
6月前
|
存储 人工智能 程序员
文件操作(一、fgets和fputs、fscanf和fprintf、fread 和 fwrite、fopen和fclose、fgetc和fputc)
文件操作(一、fgets和fputs、fscanf和fprintf、fread 和 fwrite、fopen和fclose、fgetc和fputc)
|
6月前
|
C语言
文件操作(二、scanf/fscanf/sscanf​与printf/fprintf/sprintf​、fseek与ftell与rewind、feof)
文件操作(二、scanf/fscanf/sscanf​与printf/fprintf/sprintf​、fseek与ftell与rewind、feof)
|
存储 C语言 数据安全/隐私保护
c语言文件操作详解:fgetc,fputc,fgets,fputs,fscanf,,fprintf,fread,fwrite的使用和区别
c语言文件操作详解:fgetc,fputc,fgets,fputs,fscanf,,fprintf,fread,fwrite的使用和区别
187 0
文件操作以及相关的函数fwrite,fread,fseek,ftell,rwind,feof
🐰文件操作 🌸 fwrite 🌸fread 🌸fseek 🌸fteel 🌸rwind 🌸文本文件和二进制文件 🌸文件结束的判定 🌸文件缓冲区 🌸 实现拷贝一个文件
|
编译器 C++
文件操作以及相关的函数,fputc,fgetc,fputs,fgtes,fprintf,fscanf,sprintf,sscanf
🐰文件操作 🌸打开文件 🏡文件的顺序读写 🌸fputc字符输入函数(适合所有输入流) 🌸fgetc(适合所有的输出流) 🌸fputs(适合所有的输入流) 🌸fgets(适合所有的输出流) 🏡格式化的读写 🌸fprintf(适合所有的输入流) 🌸fscanf读取文件(适合所有的输出流) 🏡流 🌸屏幕这个流(stdout)输出 🏡对比:printf/fprintf/sprintf和scanf/fscanf/sscanf 🌸sprintf(把格式化数据转换成字符串) 🌸sscanf(把字符串转换成相应格式化数据)
【C库函数】fgets详解
是一个可以从标准流中获取字符串的函数
【C库函数】fgets详解