https://www.runoob.com/cprogramming/c-function-memchr.html
1治力、fread函數:
是從文件流中讀取數據。
頭文件:#include "stdio.h"
fread函數用于從文件流中讀取數據垄开,其函數原型為:
size_t fread(void* buffer, size_t size, size_t count, FILE*stream);
【參數設置】
1)? buffer為接收數據的地址琴许,對于fread來書是要讀出數據的地址,即數據保存的地址
2)? size是要讀出內容的單字節(jié)數溉躲。
3)? count是要進行讀出size字節(jié)的數據項的個數榜田。
4)? stream為目標文件指針。
fread函數每次從stream中最多讀取count個單元锻梳,每個單元大小為size個字節(jié)箭券,將讀取的數據放到buffer;文件流的指針后移size*count字節(jié)疑枯。
【返回值】返回實際讀取的單元個數辩块,如果小于count,則可能文件結束或者讀取出錯;可以用ferror()檢測是否讀取出錯废亭,用feof()函數国章,檢測是否達到文件結尾。如果size或count為0豆村,則返回0.
注意:fwrite函數和fread函數一般用于二進制文件的輸入輸出液兽,盡量不要操作ASCII文件。
注意:假如定義buffer緩沖區(qū)的大小為1024且第二個參數為1時掌动,那么fread的第三個參數一定要小于等于1024四啰,否則會出現錯誤〈只郑或許大家在學的時候記得比較清楚柑晒,實際編程中有可能會忘記。再次特別說明眷射。
下面是一段MSDN有關fread函數和fwrite函數的使用代碼:
#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" );
}
輸出結果
Wrote 25 items
Number of items read = 25
Contents of buffer = zyxwvutsrqponmlkjihgfedc b
————————————————
原文鏈接:https://blog.csdn.net/stf1065716904/article/details/73656036/