fgets() 有局限性,每次最多只能從文件中讀取一行內容,因為 fgets 遇到換行符就結束讀取。如果希望讀取多行內容,需要使用 fread 函數;相應地寫入函數為 fwrite。
fread() 函數用來從指定文件中讀取塊數據。所謂塊數據,也就是若干個字節的數據,可以是一個字符,可以是一個字符串,可以是多行數據,并沒有什么限制。fread() 的原型為:
size_t fread ( void *ptr, size_t size, size_t count, FILE *fp );
fwrite() 函數用來向文件中寫入塊數據,它的原型為:
size_t fwrite ( void * ptr, size_t size, size_t count, FILE *fp );
對參數的說明:
size_t 是在 stddef.h 頭文件中使用 typedef 定義的數據類型,表示無符號整數,也即非負數,常用來表示數量。
返回值:返回成功讀寫的塊數,也即 count。如果返回值小于 count:
對于 fwrite() 來說,肯定發生了寫入錯誤,可以用 ferror() 函數檢測。
對于 fread() 來說,可能讀到了文件末尾,可能發生了錯誤,可以用 ferror() 或 feof() 檢測。
【示例】從鍵盤輸入一個數組,將數組寫入文件再讀取出來。
#include<stdio.h>#define N 5int main(){ //從鍵盤輸入的數據放入a,從文件讀取的數據放入b int a[N], b[N]; int i, size = sizeof(int); FILE *fp; if( (fp=fopen("D://demo.txt", "rb+")) == NULL ){ printf("Cannot open file, press any key to exit!/n"); getch(); exit(1); } //從鍵盤輸入數據 并保存到數組a for(i=0; i<N; i++){ scanf("%d", &a[i]); } //將數組a的內容寫入到文件 fwrite(a, size, N, fp); //將文件中的位置指針重新定位到文件開頭 rewind(fp); //從文件讀取內容并保存到數組b fread(b, size, N, fp); //在屏幕上顯示數組b的內容 for(i=0; i<N; i++){ printf("%d ", b[i]); } printf("/n"); fclose(fp); return 0;}運行結果:
23 409 500 100 222 主站蜘蛛池模板: 新田县| 股票| 南岸区| 西和县| 石门县| 重庆市| 沁阳市| 永靖县| 定州市| 鹤峰县| 开江县| 沅江市| 延津县| 布尔津县| 甘孜县| 江永县| 砚山县| 平潭县| 奉化市| 武宣县| 苗栗市| 旌德县| 普定县| 芷江| 本溪| 台南市| 兴化市| 丰顺县| 时尚| 长泰县| 当阳市| 浙江省| 永平县| 珲春市| 蓬莱市| 府谷县| 二手房| 平谷区| 绥化市| 巢湖市| 克山县|