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

2021-10-06 02:29:45 字數 1712 閱讀 1480

#include 

#include

#include

typedef struct

st;int main

(void

)printf

("sa:c=%c,str=%s,s=%s,h= %d\n"

, sa.c, sa.str, sa.s, sa.h)

;printf

("sizeof(sa)=%d:&c=%x,&str=%x,&s=%x,&h=%x\n"

,sizeof

(sa)

,&sa.c,

&sa.str,

&sa.s,

&sa.h)

;fwrite

(&sa,

sizeof

(sa),1

, fp)

;rewind

(fp)

;fread

(&sb,

sizeof

(sb),1

, fp)

;printf

("sa:c=%c,str=%s,s=%s,h= %d\n"

, sa.c, sa.str, sa.s, sa.h)

;fclose

(fp)

;return0;

}

結果顯示

sa:c=k,str=abcdefg,s=abcdefg,h= -3

sizeof(sa)=120:&c=ffffda10,&str=ffffda18,&s=ffffda20,&h=ffffda84

sa:c=k,str=abcdefg,s=abcdefg,h= -3

#include 

#include

#include

typedef struct

st;int main

(void

)fread

(&sb,

sizeof

(sb),1

,fp)

;printf

("sb:c=%c,str=%s,s=%s,h= %d\n"

, sb.c, sb.str, sb.s, sb.h)

;printf

("sizeof(sb)=%d:&c=%x,&str=%x,&s=%x,&h=%x\n"

,sizeof

(sb)

,&sb.c,

&sb.str,

&sb.s,

&sb.h)

;fclose

(fp)

;return0;

}

結果顯示

sb:c=k,str=,s=abcdefg,h= -3

sizeof(sb)=120:&c=ffffda90,&str=ffffda98,&s=ffffdaa0,&h=ffffdb04

對比結果顯示

sa:c=k,str=abcdefg,s=abcdefg,h= -3

sizeof(sa)=120:&c=ffffda10,&str=ffffda18,&s=ffffda20,&h=ffffda84

sa:c=k,str=abcdefg,s=abcdefg,h= -3

如果寫入檔案的結構體中含有指標,讀取時是無法獲取指標所指向的內容的,因此,最好不要用指標,可以用陣列。

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

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

C語言檔案讀取並寫入鍊錶

c語言沒啥要逼逼的,直接上 用心體會 include stdio.h include stdlib.h 鍊錶節點結構體 typedef struct link node node 向控制台輸出鍊錶的各個節點值 void dispaly node head else 找到要插入的上乙個節點位置,實際就...

C語言中檔案的讀取和寫入

c語言中檔案的讀取和寫入 注意 1 由於c是緩衝寫 所以要在關閉或重新整理後才能看到檔案內容 2 電腦處理文字型和二進位制型的不同 因為電腦只認識二進位制格式 在c語言中寫檔案 獲取檔案指標 file pfile fopen 1.txt 開啟檔案的名稱 w 檔案開啟方式 如果原來有內容也會銷毀 向檔...