C庫函數(shù)size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream) 從給定的數(shù)據(jù)流中讀取數(shù)據(jù)到ptr所指向的數(shù)組。
以下是用fread()函數(shù)的聲明。
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)
ptr -- 這是一個內(nèi)存塊的指針* nmemb字節(jié)的最小尺寸大小。
size -- 這是要讀取的大小(以字節(jié)為單位)的每一個元素。
nmemb -- 這是元素的數(shù)目,每一個都與一個大小為size個字節(jié)。
stream -- 這是一個文件對象的指針,指定一個輸入流。
作為為size_t對象,它是一個不可分割的數(shù)據(jù)類型,則返回成功讀取的元素的總數(shù)。如果這個數(shù)字不同于nmemb參數(shù),無論是發(fā)生錯誤或達到文件末尾。
下面的例子顯示了用fread()函數(shù)的用法。
#include <stdio.h> #include <string.h> int main() { FILE *fp; char c[] = "this is yiibai"; char buffer[20]; /* Open file for both reading and writing */ fp = fopen("file.txt", "w+"); /* Write data to the file */ fwrite(c, strlen(c) + 1, 1, fp); /* Seek to the beginning of the file */ fseek(fp, SEEK_SET, 0); /* Read and display data */ fread(buffer, strlen(c)+1, 1, fp); printf("%s ", buffer); fclose(fp); return(0); }
讓我們編譯和運行上面的程序,這將創(chuàng)建一個文件file.txt的,寫入的內(nèi)容: this is yiibai。下一步,我們使用 fseek() 函數(shù)寫指針復(fù)位到開始的文件和準(zhǔn)備文件的內(nèi)容如下:
this is yiibai