fread寫入結構體

2021-09-01 14:06:06 字數 2379 閱讀 7410

#include#include #define n 4

typedef struct student_type

student_type;

int main()

,,,};

int i,j;

file *fp;

fp = fopen("stu_list.txt","wb");

if(fp==null)

fwrite(&stud,sizeof(student_type),4,fp);

fclose(fp);

fp = null;

fp = fopen("stu_list.txt","rb");

fseek(fp,0l,seek_set);

fread(&stud,sizeof(student_type),4,fp);

fclose(fp);

fp = null;

for(i=0;i

#include #include#includetypedef struct personperson;

int main()

,,};

file *pfile = null;

pfile = fopen("d.dat","wb");

if (null != pfile)

else

pfile = fopen("d.dat","rb");

if (null != pfile) }

return 0;

}

int fseek( file *stream, long offset, int origin );

第乙個引數stream為檔案指標

第二個引數offset為偏移量,正數表示正向偏移,負數表示負向偏移

第三個引數origin設定從檔案的**開始偏移,可能取值為:seek_cur、 seek_end 或 seek_set

seek_set: 檔案開頭

seek_cur: 當前位置

seek_end: 檔案結尾

其中seek_set,seek_cur和seek_end依次為0,1和2.

簡言之:

fseek(fp,100l,0);把檔案內部指標移動到離檔案開頭100位元組處;

fseek(fp,100l,1);把檔案內部指標移動到離檔案當前位置100位元組處;

fseek(fp,-100l,2);把檔案內部指標退回到離檔案結尾100位元組處。

exit()和return的區別:

按照ansi c,在最初呼叫的main()中使用return和exit()的效果相同。

但要注意這裡所說的是「最初呼叫」。如果main()在乙個遞迴程式中,exit()仍然會終止程式;但return將

控制權移交給遞迴的前一級,直到最初的那一級,此時return才會終止程式。return和exit()的另乙個區別

在於,即使在除main()之外的函式中呼叫exit(),它也將終止程式。

size_t fwrite(const void* buffer, size_t size, size_t count, file* stream);

注意:這個函式以二進位制形式對檔案進行操作,不侷限於文字檔案

返回值:返回實際寫入的資料塊數目

(1)buffer:是乙個指標,對fwrite來說,是要輸出資料的位址;

(2)size:要寫入內容的單位元組數;

(3)count:要進行寫入size位元組的資料項的個數;

(4)stream:目標檔案指標;

(5)返回實際寫入的資料項個數count。

說明:寫入到檔案的**? 這個與檔案的開啟模式有關,如果是w+,則是從file pointer指向的位址開始寫,替換掉之後的內容,檔案的長度可以不變,stream的位置移動count個數;如果是a+,則從檔案的末尾開始新增,檔案長度加大,而且是fseek函式對此函式沒有作用。

函式原型:

size_t fread(void *buffer, size_t size, size_t count, file *stream); 

功 能:

從乙個檔案流中讀資料,讀取count個元素,每個元素size位元組.如果呼叫成功返回count.如果呼叫成功則實際讀取size*count位元組

參 數:

buffer

用於接收資料的記憶體位址,大小至少是 size*count 位元組.

size

單個元素的大小,單位是位元組

count

元素的個數,每個元素是size位元組.

stream

輸入流返回值:

實際讀取的元素數.如果返回值與count(不是count*size)不相同,則可能檔案結尾或發生錯誤.

從ferror和feof獲取錯誤資訊或檢測是否到達檔案結尾.

C語言中將結構體寫入檔案

可以使用fwrite 將乙個結構體寫入檔案 fwrite some struct,sizeof somestruct,1,fp 對應的fread函式可以再把它讀出來,此處fwrite受到乙個結構的指標並把這個結構的記憶體映像作為位元組流寫入檔案。sizeof操作符計算出結構占用的位元組數。但是這樣用...

用指標直接向結構體寫入資料

我的思緒 1.既然到設定數量就結束了,那麼有可能訪問到了非法記憶體。2.為什麼可以設定飲料名稱,卻無法設定飲料的數量。我設定飲料名稱用的是指標,但是在設定數量無法用,那有可能是指標指向的位址不對。main.c 主檔案 include include 清屏函式 include 等待5秒,sleep 以...

將結構體資料儲存寫入到檔案中

利用系統介面,將結構體資料寫入到檔案中。file name copy.c author lifengyu created time 2018.8.13 include include include include include include struct student int main 定義...