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 );
對引數的說明:
ptr
為記憶體區塊的指標,它可以是陣列、變數、結構體等。
fread()
中的ptr
用來存放讀取到的資料,
fwrite()
中的ptr
用來存放要寫入的資料。
size
:表示每個資料塊的位元組數。
count
:表示要讀寫的資料塊的塊數。
fp:表示檔案指標。
理論上,每次讀寫
size*count
個位元組的資料。
size_t
是在stddef.h
標頭檔案中使用
typedef
定義的資料型別,表示無符號整數,也即非負數,常用來表示數量。
返回值:返回成功讀寫的塊數,也即
count
。如果返回值小於
count:
對於fwrite()
來說,肯定發生了寫入錯誤,可以用
ferror()
函式檢測。 對於
fread()
來說,可能讀到了檔案末尾,可能發生了錯誤,可以用
ferror()
或feof()
檢測。
【示例】從鍵盤輸入乙個陣列,將陣列寫入檔案再讀取出來。
#include
#define n 5
int main() //
從鍵盤輸入資料
並儲存到陣列a
for(i=0; i
scanf("%d", &a[i]); }
//將陣列a
的內容寫入到檔案
fwrite(a, size, n, fp); //
將檔案中的位置指標重新定位到檔案開頭
rewind(fp); //
從檔案讀取內容並儲存到陣列b
fread(b, size, n, fp); //
在螢幕上顯示陣列
b的內容
for(i=0; i
printf("%d ", b[i]); }
printf("\n");
fclose(fp);
return 0; }
執行結果:
23 409 500 100 222↙
23 409 500 100 222
fwrite()/fread()
函式直接操作位元組,建議使用二進位制方式開啟檔案。 開啟
d:\\demo.txt
,發現檔案內容根本無法閱讀。這是因為我們使用
"rb+"
方式開啟檔案,資料以二進位制形式寫入檔案,一般無法閱讀。
資料寫入完畢後,位置指標在檔案的末尾,要想讀取資料,必須將檔案指標移動到檔案開頭,這就是
rewind(fp);
的作用。更多關於
rewind
函式的內容:c語言
rewind函式。
檔案的字尾不一定是
.txt
,它可以是任意的,你可以自己命名,例如
demo.ddd
、demo.doc
、demo.diy 等。
【示例】從鍵盤輸入兩個學生資料,寫入乙個檔案中,再讀出這兩個學生的資料顯示在螢幕上。
#include
#define n 2
struct stuboya[n], boyb[n], *pa, *pb;
int main() //
從鍵盤輸入資料
printf("input data:\n");
for(i=0; i
scanf("%s %d %d %f",pa->name, &pa->num,&pa->age, &pa->score); }
//將陣列boya
的資料寫入檔案
fwrite(boya, sizeof(struct stu), n, fp); //
將檔案指標重置到檔案開頭
rewind(fp); //
從檔案讀取資料並儲存到資料
boyb
fread(boyb, sizeof(struct stu), n, fp); //
輸出陣列
boyb
中的資料
for(i=0; i
printf("%s %d %d %f\n", pb->name, pb->num, pb->age, pb->score); }
fclose(fp);
return 0; }
執行結果:
input data:
tom 2 15 90.5↙
hua 1 14 99↙
tom 2 15 90.500000
hua 1 14 99.000000
c語言以資料塊的形式對檔案資料進行操作
fgets 有侷限性,每次最多只能從檔案中讀取一行內容,因為 fgets 遇到換行符就結束讀取。如果希望讀取多行內容,需要使用 fread 函式 相應地寫入函式為 fwrite。fread 函式用來從指定檔案中讀取塊資料。所謂塊資料,也就是若干個位元組的資料,可以是乙個字元,可以是乙個字串,可以是多...
C語言檔案的讀寫
1.讀寫乙個字元的函式 函式名 fputc 呼叫形式 fputc ch,fp 功能 把字串ch寫到檔案指標變數fp所指向的檔案中 2.使用檔案的方式 r 唯讀 為輸入檔案開啟乙個已存在的ascii檔案 w 只寫,為輸入開啟乙個ascii檔案 a 追加,向ascii檔案尾新增資料 include in...
C語言檔案的讀寫
對檔案的讀和寫是最常見的檔案操作,在c語言中提供了多種檔案讀寫的函式 1.字元讀寫函式 fgetc 和 fputc 2.字串讀寫函式 fgets 和 fputs 3.字元塊讀寫函式 fread 和 fwrite 4.格式化讀寫函式 fscanf 和 fprintf 字元讀寫函式是以字元為單位的讀寫函...