当前位置: C语言 -- 标准库 -- <stdio.h> -- fread

fread函数


概要:
#include <stdio.h>
size_t fread(void * restrict ptr,
     size_t size, size_t nmemb,
     FILE * restrict stream);

描述:

该函数从参数stream指向的流中读取最多nmemb个元素到参数ptr指向的数组,每个元素的大小为size

对于每个元素,需要调用sizefgetc函数,结果按读取顺序存储在正好覆盖该元素的unsigned char数组中。

如果流定义了文件位置指示符,读取元素后,文件位置指示符的前进值等于成功读取的字符数。如果发生错误,文件位置指示符的值是不确定的。如果只读取了部分元素,其值是不确定的。


参数:
void * restrict ptr

指向数组的指针。

size_t size

单个读取元素的大小。

size_t nmemb

读取的元素数目。

FILE * restrict stream

FILE类型指针,指向读取输入的数据流。


返回值:

该函数返回成功读取的元素数目;如果发生读取错误(read error)或者到达文件末尾,返回值可能小于nmemb。如果参数size或者参数nmemb值为0,函数返回值为0,并且数组内容和流的状态保持不变。


范例:
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
/*函数fread范例*/

#include <stdio.h>
#include <stdlib.h>

#define NUMBER 10   //需要读取的字符数。

int main(void)
{
    FILE *pFile;
    size_t count;
    char *str;

    /*打开文件。*/
    pFile = fopen("gch.bin", "rb");
    if(!pFile)
    {
        perror("Error");
        exit(EXIT_FAILURE);
    }

    /*读取数据。*/
    if((str=malloc(sizeof(char)*NUMBER)) != NULL)
        count = fread(str, sizeof(char), NUMBER, pFile);

    /*关闭文件。*/
    fclose(pFile);

    if(count<NUMBER)
    {
        puts("A read error is encountered.");
        printf("%d elements have been successfully read.\n", count);
    }
    else
        printf("%d elements have been successfully read.\n", NUMBER);

    /*释放内存。*/
    free(str);

    return 0;
}


结果:

将从文件中读取10个字符到数组中。


相关内容:
fwrite 将数据从数组写入流的函数。