文章目錄
視頻地址:https://www.bilibili.com/video/av73896847
fread與fwrite
從信息的轉換角度看,文件的讀取與寫入,其實就是信息在文件介質(磁盤)與內存之間進行轉換。
文件讀取(fread),就是將磁盤中的文件內容,讀取進內存中;而文件寫入(fwrite),就是將內存中的內容,寫入到磁盤中。
那麼他們就會面臨幾個關鍵問題:
- 數據在磁盤哪裏?
- 數據在內存哪裏?
- 有多少數據?
瞭解以上信息後,就不難理解fread與fwrite的函數原型:
size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream );
對於fwrite,它的四個參數:
- stream:指向FILE結構體,告之是要寫入到磁盤中的哪個文件
- buffer:指向內存中某個位置,告之是把內存中哪個位置的內容寫入文件
- size和count參數:它們的乘積表示一共要寫入多少字節的內容
#include <stdio.h>
int main(int argc, char* argv[])
{
FILE* pFile = fopen("mytest.txt", "w");
int nValueAry[3] = { 0x11111111, 0x22222222, 0x33333333 };
fwrite(nValueAry, sizeof(int), 3, pFile);
fclose(pFile);
return 0;
}
fread與fwrite類似:
size_t fread( void *buffer, size_t size, size_t count, FILE *stream );
對於fread,它的四個參數:
- stream:指向FILE結構體,告之是讀取磁盤中的哪個文件的內容
- buffer:指向內存中某個位置,告之讀取到內存中哪個位置
- size和count參數:它們的乘積表示一共要讀取多少字節的內容
#include <stdio.h>
int main(int argc, char* argv[])
{
FILE* pFile = fopen("mytest.txt", "r");
int nValueAry[3] = { 0, 0, 0 };
fread(nValueAry, sizeof(int), 3, pFile);
fclose(pFile);
return 0;
}