龙空技术网

《鹏哥C语言第一课》第127.3讲 fread函数功能的介绍 #编程入门

鹏哥C语言 57

前言:

此刻看官们对“c语言读二进制文件fread”大致比较着重,看官们都需要剖析一些“c语言读二进制文件fread”的相关知识。那么小编也在网摘上汇集了一些对于“c语言读二进制文件fread””的相关文章,希望各位老铁们能喜欢,大家一起来学习一下吧!

fread函数功能的介绍。

这个视频再来给大家介绍fread函数。freadf就是fle的意思,read就是读,它其实就是从文件里面读数据。这个函数的基本情况什么样子?来看一下。fread是函数的名字,它依然有四个参数。

·第一个是void*ptr。

·第二个是size_tnmemb。

·第三个是size_tnmemb。

·第四个是FILE*stream。

如果有朋友还记得前面给大家讲的iwrite函数,大家可以对比一下。我把它拿过来放到画图板里头,再把fread拿过来,大家会发现它们的参数几乎一模一样。它们的参数是一模一样,我也有4个参数,顺序什么的都一样,有不一样的地方就在这个地方,这是const限制的。

因为write是把数据写到流里边儿去,这个地方只要填够原数据就可以了,所以不需要修改const限制了ptr所有指向的空间。而现在大家注意read这儿没有加const,也就是这个空间是不是需要被改变?大家注意写不着急,这儿有一点点区别,参数、个数、顺序没什么区别。fread的参数大概了解一下,原型大概了解一下。

然后看功能,这个函数的功能是什么?它用于从文件中读取数据块,并将其存储到内存缓冲区中,其实就是存到一个内存块里边去,从文件里面读数据,存到内存块里面去。具体是怎么个意思?注意看参数,参数里面的第一个叫ptr,它是指向内存区域的指针,用于存放从文件中读取的数据。

这个地方是个指针,它指向哪块内存?这块空间是用来存放从内存中读取的数据的。大家想象一下,是不是读到的数据放到ptr所指向的空间里面去?ptr中指向的空间是可能被修改的,所以前面敢不敢加入const?不敢。这就回答了前面为什么这几没有const,因为ptt所指向的空间要被修改,所以const不能去限制。

·第二个是sizc参数,sizc是要读取的每个数据的大小,这地方可能让你读取,比如5个整形,这个地方5个整形大小的4个字节,这就是4,注意要读取的每个数据块的大小,单位是字节。这个地方nmemb是什么?nmemb是要读取的数据块的数量,你让我读多少个块,多少个这样的数据。

·再来看一下最后流,流是stream,是指向FILE类型结构体的指针,它指定了要从哪个流中去读取这个数据。

·再来看它的返回值,这个函数的返回值返回实际读取的数据块的数量,比如你让我读5个,如果只读到3个就返回3,如果读到5个就返回5,如果一个都没读到就返回0,其实就是这意思。

这个地方发现fread这个函数的基本情况大概就清楚了,我是从这个流里面去读nmemb个内存块,一个块的大小是多大,size这么大,最后放到ptr所有指向的空间里面去。

如果理解,这个函数使用的时候哪些注意事项?

·首先大家注意,使用这个函数依然里包含stdio.h这个头文件。

·再下来就是使用这个函数之前要确保文件是以可读的方式打开,而且是二进制。大家注意,二进制可读的方式打开。

·第三个ptr指向的内存区域必须足够大,以便存储指定数量和大小的数据块。就是我从文件里面读的数据放到pt指向的空间里面,你得能够放得下。

·再下来就是如果fread成功读取了指定的数据块,则返回的值等于nmemb你让我读5个,那我就返回0。如果成功读取到5个就反过,如果读取的数量少于nmemb则可能已经到达了文件末尾或者是发生了错误。

·再下来是这个地方以二进制的方式读取时fread是常用的函数,但对于文本文件的读取通常可能使用的是fgets和fscanf fgetc这样的一些函数,注意它是以二进制的方式来读的。

同学们还是像之前讲的函数介绍清楚了,但它怎么用?下个视频再给大家讲一讲这个函数到底怎么用。如果大家听懂觉得有用一定给鹏哥的视频点个小红心,我也可以关注一下鹏哥,下个视频再见。

标签: #c语言读二进制文件fread