一、讀取二進位文件
#include <stdio.h> int main() { FILE *fp; char buffer[10]; fp = fopen("data.bin", "rb"); //以二進位方式打開文件 fread(buffer, sizeof(char), 10, fp); //讀取10個位元組 fclose(fp); return 0; }
fread函數用於讀取二進位文件,包括圖像、視頻、音頻等多媒體格式,具有很高的應用價值。
在代碼中,我們首先使用fopen函數以rb方式打開文件,rb表示以二進位方式讀取文件。然後定義一個char類型的數組buffer,長度為10,利用fread函數讀取二進位文件的前10個位元組。最後使用fclose函數關閉文件。
二、讀取文本文件
#include <stdio.h> int main() { FILE *fp; char buffer[100]; fp = fopen("data.txt", "r"); //以文本方式打開文件 fread(buffer, sizeof(char), 100, fp); //讀取100個位元組 fclose(fp); return 0; }
不同於二進位文件,文本文件需要以不同的方式讀取。在代碼中,我們使用fopen函數以r方式打開文件,r表示以文本方式讀取文件。然後定義一個char類型的數組buffer,長度為100,利用fread函數讀取文本文件的前100個位元組,最後使用fclose函數關閉文件。
三、產生截斷效果
#include <stdio.h> int main() { FILE *fp; char buffer[100]; fp=fopen("data.txt", "r"); fread(buffer, sizeof(char), 100, fp); fclose(fp); printf("%s\n", buffer); return 0; }
如果讀取的位元組數大於文件實際的大小,fread函數會自動產生截斷效果。在代碼中,我們打開一個只有5個字元的文本文件,然後讀取100個位元組並保存到buffer數組中,最後使用printf函數輸出buffer中的字元串。由於讀取的位元組數大於文件實際大小,所以輸出結果中會出現一些奇怪的字元。
四、讀取指定長度
#include <stdio.h> int main() { FILE *fp; char buffer[100]; fp = fopen("data.txt", "r"); fseek(fp, 5, SEEK_SET); //移動文件指針到第5個字元處 fread(buffer, sizeof(char), 10, fp); //讀取10個字元 fclose(fp); buffer[10] = '\0'; //添加字元串結束標誌 printf("%s\n", buffer); return 0; }
fread函數可以讀取任意長度的數據,但是我們也可以指定讀取的長度。在代碼中,我們首先使用fseek函數移動文件指針到第5個字元處,然後利用fread函數讀取10個字元,並保存到buffer數組中。最後使用printf函數輸出buffer中的字元串,注意要手動添加字元串結束標誌。
五、讀取成員為struct類型的數據
#include <stdio.h> struct student { char name[20]; int age; float score; }; int main() { FILE *fp; struct student st; fp = fopen("data.bin", "rb"); fread(&st, sizeof(struct student), 1, fp); //讀取一個struct成員 fclose(fp); printf("Name: %s\nAge: %d\nScore: %.2f\n", st.name, st.age, st.score); return 0; }
fread函數不僅可以讀取基本數據類型,還可以讀取struct類型的數據。在代碼中,我們定義了一個名為student的struct類型,包含3個成員:name、age和score。然後我們利用fopen函數以二進位方式打開文件,利用fread函數讀取一個struct成員並保存到st結構體中,最後使用printf函數輸出st中的成員信息。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/152961.html