首页技术fread在c语言中是什么意思?c语言fread是什么意思

fread在c语言中是什么意思?c语言fread是什么意思

编程之家2026-06-08695次浏览

大家好,今天小编来为大家解答以下的问题,关于fread在c语言中是什么意思,c语言fread是什么意思这个很多人还不知道,现在让我们一起来看看吧!

fread在c语言中是什么意思?c语言fread是什么意思

c语言中fread函数怎么用

c语言中fread函数语法为size_tfread(void*restrictbuffer,size_tsize,size_tcount,FILE*restrictstream)。buffer是指向要读取的数组中首个对象的指针,size是每个对象的大小(单位是字节),count是要读取的对象个数,stream是输入流。通过fread函数可进行数据读取,返回成功读取的对象个数。

扩展资料:

fread函数从给定输入流stream读取最多count个对象到数组buffer中(相当于以对每个对象调用size次fgetc),把buffer当作unsignedchar数组并顺序保存结果。流的文件位置指示器前进读取的字节数。

若出现错误,则流的文件位置指示器的位置不确定。若没有完整地读入最后一个元素,则其值不确定,可能小于count。若size或count为零,则fread返回零且不进行其他动作。fread不区分文件尾和错误,因此调用者必须用feof和ferror才能判断发生了什么。

C语言中fread的一些疑问

L_o_o_n_i_e回答得不怎么准确!

我帮你解释下:

fread在c语言中是什么意思?c语言fread是什么意思

首先介绍fread函数

功能:从一个流中读数据

函数原型: int fread(void*ptr, int size, int nitems, FILE*stream);参数:用于接收数据的地址(指针)(ptr)

单个元素的大小(size):单位是字节而不是位,例如读取一个整数值就是4元素个数(nitems)

提供数据的文件指针(stream)

返回值:成功读取的元素个数

fread在c语言中是什么意思?c语言fread是什么意思

由上面介绍知道fread函数的第一个参数是个指针变量,可以指向任意类型实参!

严归正传,对于你这里的问题,你代码中的s是个结构体数组变量,跟普通数组变量一样,数组名本身就是个指针常量,所以在buffer位置写成s是没有问题的。

那么为什么你这里读会变乱码呢?

虽然你帖的代码并没有全,但从你说的读取是乱码,我大概猜到在你用fwrite函数把数据写进文件的时候是以每次一个结构体大小(也就是仅仅是数组s的一个元素而已,也就对应一个下标而已)和一个数据块的方式写进文件里的。所以当你用fread函数读取的时候,假设你在buffer位置写成s,本身语法是没有问题的,但是就相当于你把数组s的仅一个元素的数据大小当成所有s的数据存到s中,也就是没有对应起来,所以显示会是乱码。

所以你可以有两种方式实现:

方式一:

在写的时候按一次以s的一个元素的数据大小作为一个数据块依次写进文件,然后读取时候也以同样方式读出来。

代码可以这么写:

假设s的大小为:SIZE_S

for(count= 0; count< SIZE_S; count++)

fwrite(&s[count], sizeof(struct student), 1, fp);

然后读取时:

for(count= 0; count< SIZE_S; count++)

fread(&s[count], sizeof(struct student), 1, fp);

方式二:

以整个数组s的数据大小作为一个数据块一次写进文件,然后读取时也同样全部读出来,最后可以以循环的方式打印出来。

代码实现如下:

假设s的大小为:SIZE_S

fwrite(s, SIZE_S* sizeof(struct student), 1, fp);

然后读取时:

fread(s, SIZE_S* sizeof(struct student), 1, fp);

最后打印:

for(count= 0; count< SIZE_S; count++)

fread(&s[count], sizeof(struct student), 1, fp);

明白了记得给哥哥顶下~~~ ^_^

c语言文件操作fwrite和fread

fread是C语言标准为中的一个函数。它从一个文件流中读数据,最多读取count个元素,每个元素size字节,如果调用成功返回实际读取到的元素个数,如果不成功或读到文件末尾返回 0。

fwrite是C语言标准库中的一个函数,指向文件写入一个数据块。示例如下:

//读取一个完整的文件

#include<stdio.h>

#include<stdlib.h>

intmain()

{

FILE*pFile;//文件指针

longlSize;//用于文件长度

char*buffer;//文件缓冲区指针

size_tresult;//返回值是读取的内容数量

pFile=fopen("myfile.bin","rb");

if(pFile==NULL){fputs("Fileerror",stderr);exit(1);}//如果文件错误,退出1

//获得文件大小

fseek(pFile,0,SEEK_END);//指针移到文件末位

lSize=ftell(pFile);//获得文件长度

rewind(pFile);//函数rewind()把文件指针移到由stream(流)指定的开始处,同时清除和流相关的错误和EOF标记

//为整个文件分配内存缓冲区

buffer=(char*)malloc(sizeof(char)*lSize);//分配缓冲区,按前面的lSize

if(buffer==NULL){fputs("Memoryerror",stderr);exit(2);}//内存分配错误,退出2

//该文件复制到缓冲区

result=fread(buffer,1,lSize,pFile);//返回值是读取的内容数量

if(result!=lSize){fputs("Readingerror",stderr);exit(3);}//返回值如果不和文件大小,读错误

//terminate//文件终止

fclose(pFile);

free(buffer);

return0;

}综合使用的例子。

#include<stdio.h>

intmain()

{

FILE*pFile;

floatbuffer[]={2.0,3.0,8.0};

pFile=fopen("myfile.bin","wb");//打开文件写操作

fwrite(buffer,1,sizeof(buffer),pFile);//把浮点数组写到文件myfile.bin

fclose(pFile);//关闭文件

floatread[3];

pFile=fopen("myfile.bin","rb");//重新打开文件读操作

fread(read,1,sizeof(read),pFile);//从文件中读数据

printf("%f\t%f\t%f

",read[0],read[1],read[2]);

fclose(pFile);//关闭文件

return0;

}

fread在c语言中是什么意思和c语言fread是什么意思的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!

c语言指针,c语言必背100代码爆牌贼?爆牌贼卡组2026