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ù)的地址,對于fread來書是要讀出數(shù)據(jù)的地址,即數(shù)據(jù)保存的地址
2)? size是要讀出內(nèi)容的單字節(jié)數(shù)。
3)? count是要進(jìn)行讀出size字節(jié)的數(shù)據(jù)項的個數(shù)。
4)? stream為目標(biāo)文件指針。
fread函數(shù)每次從stream中最多讀取count個單元,每個單元大小為size個字節(jié),將讀取的數(shù)據(jù)放到buffer;文件流的指針后移size*count字節(jié)。
【返回值】返回實際讀取的單元個數(shù),如果小于count,則可能文件結(jié)束或者讀取出錯;可以用ferror()檢測是否讀取出錯,用feof()函數(shù),檢測是否達(dá)到文件結(jié)尾。如果size或count為0,則返回0.
注意:fwrite函數(shù)和fread函數(shù)一般用于二進(jìn)制文件的輸入輸出,盡量不要操作ASCII文件。
注意:假如定義buffer緩沖區(qū)的大小為1024且第二個參數(shù)為1時,那么fread的第三個參數(shù)一定要小于等于1024,否則會出現(xiàn)錯誤。或許大家在學(xué)的時候記得比較清楚,實際編程中有可能會忘記。再次特別說明。
下面是一段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/