fread函数该如何运用呢?求高手指点一下?

有一个二进制文件,我想把里面的一个八个字节的数读出来(其实就是1)然后我建立一个int a[];数组,然后调用fread(a,8,1,fp);fp是对应打开文件的指针,怎么就没读进去呢?我把数组改成double 后再读,就能读进去了,可是读的不是1,是一个接近0的小数,我就崩溃了,我的问题是,第二个参数,跟第一个参数有关系吗?八个字节的数到底怎么才能读出来?跪求高手解答!

浮云间
浏览 472回答 3
3回答

缥缈止盈

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

慕慕森

fread函数可从文件中读取二进制数据语法:A = fread(fid, count)A = fread(fid, count, precision)其中fid为指针所指文件中的当前位置,count指读取的数据个数, precision表示以什么格式的数据类型读取数据。例子:fid = fopen('alphabet.txt', 'r');c = fread(fid, 5)'c =65 66 67 68 69fclose(fid);程序说明:alphabet文件中按顺序存储着26个英文字母,读取文件之前要先打开文件,由于未指定读取数据的类型,所以程序指定默认类型为无符号字符型即uchar,65、66、67、68、69代表A、B、C、D、E,文件用完还要记得关闭文件,以便释放指针。

人到中年有点甜

1、C语言中:fread是一个函数。从一个文件流中读数据,最多读取count个元素,每个元素size字节,如果调用成功返回实际读取到的元素个数,如果不成功或读到文件末尾返回 0。函数原型:size_t fread ( void *buffer, size_t size, size_t count, FILE *stream) ;参数:buffer &nbsp;用于接收数据的内存地址size &nbsp;要读的每个数据项的字节数,单位是字节count &nbsp;要读数据项的个数,每个数据项size个字节.stream &nbsp;输入流的指针返回值:返回实际读取的元素个数。如果返回值与count不相同,则可能文件结尾或发生错误。从ferror和feof获取错误信息或检测是否到达文件结尾。2、例程:#include<stdio.h>#include<string.h>int&nbsp;main(void){&nbsp;&nbsp;&nbsp;&nbsp;FILE*stream;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;msg[]="this&nbsp;is&nbsp;a&nbsp;test";&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;buf[20];&nbsp;&nbsp;&nbsp;&nbsp;if((stream=fopen("DUMMY.FIL","w+"))==NULL)&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,"Cannot&nbsp;open&nbsp;outputfile.\n");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;fwrite(msg,1,strlen(msg)+1,stream);&nbsp;&nbsp;&nbsp;&nbsp;fseek(stream,0,SEEK_SET);&nbsp;&nbsp;&nbsp;&nbsp;fread(buf,strlen(msg)+1,1,stream);&nbsp;&nbsp;&nbsp;&nbsp;printf("%s\n",buf);&nbsp;&nbsp;&nbsp;&nbsp;fclose(stream);&nbsp;&nbsp;&nbsp;&nbsp;return0;}
打开App,查看更多内容
随时随地看视频慕课网APP