https://www.runoob.com/cprogramming/c-function-memchr.html
1、fread函數(shù):
是從文件流中讀取數(shù)據(jù)。
頭文件:#include "stdio.h"
fread函數(shù)用于從文件流中讀取數(shù)據(jù),其函數(shù)原型為:
size_t fread(void* buffer, size_t size, size_t count, FILE*stream);
【參數(shù)設(shè)置】
1)? buffer為接收數(shù)據(jù)的地址,對(duì)于fread來書是要讀出數(shù)據(jù)的地址,即數(shù)據(jù)保存的地址
2)? size是要讀出內(nèi)容的單字節(jié)數(shù)。
3)? count是要進(jìn)行讀出size字節(jié)的數(shù)據(jù)項(xiàng)的個(gè)數(shù)。
4)? stream為目標(biāo)文件指針。
fread函數(shù)每次從stream中最多讀取count個(gè)單元,每個(gè)單元大小為size個(gè)字節(jié),將讀取的數(shù)據(jù)放到buffer;文件流的指針后移size*count字節(jié)。
【返回值】返回實(shí)際讀取的單元個(gè)數(shù),如果小于count,則可能文件結(jié)束或者讀取出錯(cuò);可以用ferror()檢測(cè)是否讀取出錯(cuò),用feof()函數(shù),檢測(cè)是否達(dá)到文件結(jié)尾。如果size或count為0,則返回0.
注意:fwrite函數(shù)和fread函數(shù)一般用于二進(jìn)制文件的輸入輸出,盡量不要操作ASCII文件。
注意:假如定義buffer緩沖區(qū)的大小為1024且第二個(gè)參數(shù)為1時(shí),那么fread的第三個(gè)參數(shù)一定要小于等于1024,否則會(huì)出現(xiàn)錯(cuò)誤。或許大家在學(xué)的時(shí)候記得比較清楚,實(shí)際編程中有可能會(huì)忘記。再次特別說明。
下面是一段MSDN有關(guān)fread函數(shù)和fwrite函數(shù)的使用代碼:
#include
void main( void )
{
? ? FILE *stream;
? ? char list[30];
? ? int? i,numread, numwritten;
? ? if( (stream = fopen("fread.out", "w+t" )) != NULL )
? ? {
? ? ? ? ? for ( i = 0; i < 25; i++ )
? ? ? ? ? ? ? ? list[i] = (char)('z' - i);
? ? ? ? ? numwritten = fwrite( list, sizeof( char ), 25, stream );
? ? ? ? ? printf( "Wrote %d items\n", numwritten );
? ? ? ? ? fclose( stream );
? ? }
? ? else
? ? ? ? ? printf( "Problem opening the file\n" );
? ? if( (stream = fopen("fread.out", "r+t" )) != NULL )
? ? {
? ? ? ? ? numread = fread( list, sizeof( char ), 25, stream );
? ? ? ? ? printf( "Number of items read = %d\n", numread );
? ? ? ? ? printf( "Contents of buffer = %.25s\n", list );
? ? ? ? ? fclose( stream );
? ? }
? ? else
? ? ? ? ? printf( "File could not be opened\n" );
}
輸出結(jié)果
Wrote 25 items
Number of items read = 25
Contents of buffer = zyxwvutsrqponmlkjihgfedc b
————————————————
原文鏈接:https://blog.csdn.net/stf1065716904/article/details/73656036/