在 C 语言 中,我们在使用 fgets 函数读取 文件 内容时,每次最多只能读取一行,我们要读取文件多行内容,可以使用 fread 函数。
fread() 函数用来从指定文件中读取块数据。所谓块数据,也就是若干个字节的数据,可以是一个 字符,可以是一个 字符串,可以是多行数据,并没有什么限制。
size_t fread(void *ptr, size_t size, size_t count, FILE *fp);
参数 | 描述 |
---|---|
ptr | 用来存放读取到的数据。 |
size | 表示每个数据块的字节数。 |
count | 表示要读取的数据块的块数。 |
fp | 文件指针。 |
返回成功读取的块数。
fread 函数在 stdio.h 的头文件里面。
理论上,每次读取 size*count 个字节的数据。
使用 fopen 函数打开文件,使用 fread 函数以块方式读文件
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("嗨客网(www.haicoder.net)\n\n");
FILE *fp = NULL;
if ( (fp = fopen("c:\\1.txt", "rb+")) == NULL )
{
puts("Open file failed\n");
return;
}
else
{
puts("Open file success\n");
}
int arr[12] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
int ret[12];
fwrite(arr, 4, 12, fp);
puts("Write file success\n");
rewind(fp);
if (fread(ret, 4, 12, fp) == NULL)
{
puts("Read file error\n");
}
else
{
printf("Read file success\n");
}
int i = 0;
for(i = 0; i < 12; i++)
{
printf("%d, ", ret[i]);
}
fclose(fp);
return 0;
}
程序运行后,控制台输出如下:
我们使用,fread 函数读取了我们写入到文件中的 int 类型 的数据,因为我们需要读取的是 int 类型的数据,因此,我们每次读取 4 个字节,读取了 100 个数据块。
这次,我们可以看到,我们一次性读取了文件的所有内容。
fread() 函数用来从指定文件中读取块数据。所谓块数据,也就是若干个字节的数据,可以是一个字符,可以是一个字符串,可以是多行数据,并没有什么限制。