C fread()

fread() 函数定义在 stdio.h 头文件中。它有助于将数据从指定的流读取到数组中。通过指针指定文件读取后数据需要存储的内存位置的起始地址。


size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream); #where stream should be a file pointer

 

fread() 参数: 

fread() 函数接受四个参数。此函数主要用于读取二进制数据,它是 fwrite() 的互补函数。

参数 描述 必需/可选
ptr 指向最小大小为 size*nmemb 字节的内存块的指针 必需
size 要读取的每个元素的字节大小 必需
nmemb 元素的数量,每个元素的大小为 size 字节 必需
stream 指向 FILE 对象的指针,该对象指定输入流 必需

fread() 返回值

fread() 函数的返回值为成功读取的元素总数。它以 size_t 对象的形式返回,size_t 是一种整型数据类型。

输入 返回值
成功 与 nmemb 等效的整数值
错误或文件结束符 (EOF) 小于 nmemb 的值

fread() 示例  

示例 1:C 语言中 fread() 函数的工作原理?


#include <stdio.h>
#include <string.h>
int main()
{
   FILE *pnt;
   char chr[] = "C Programming";
   char buf[100];

   /* Open file */
   pnt = fopen("myfile.txt", "w+");

   /* Write data*/
   fwrite(chr, strlen(chr) + 1, 1, pnt);


   fseek(pnt, 0, SEEK_SET);

   /* Read and display data */
   fread(buf, strlen(chr)+1, 1, pnt);
   printf("%s\n", buf);
   fclose(pnt);
   
   return(0);
}

输出


C Programming

示例 2:fread() 在 C 语言中如何工作?


#include <stdio.h>

int main (){
  int buf;
  int val = 2431;
  // Creating file and storing value
  FILE * stream;
  stream = fopen("myfile.txt", "w");
  fwrite(&val;, sizeof(int), 1, stream);
  fclose(stream);

  // Reading value from file
  stream = fopen("myfile.txt", "r");
  fread(&buf;, sizeof(int), 1, stream);
  printf("High score readed is: %d\n",buf);
  fclose(stream);

  return(0);
}

输出


High score readed is:2431