物聯網學習教程—檔案的讀寫二
二、資料塊讀寫函式(fread() 和 fwrite())
函式呼叫:
fread (buffer,size,count , fp);
fwrite(buffer,size,count,fp);
引數說明:
buffer :是一個指標。
對fread 來說,它是讀入資料的存放地址。
對fwrite 來說,是要輸出資料的地址(均指起始地址)。
size : 要讀寫的位元組數。
count : 要進行讀寫多少個 size 位元組的資料項。
fp : 檔案型指標。
使用舉例:
若檔案以二進位制形式開啟:
fread(f,4,2,fp);
此函式從fp 所指向的檔案中讀入 2 個 4 個位元組的數 據,儲存到陣列 f 中。
使用舉例:
若有如下結構型別:
struct student_type
{char name[10];
int num;
int age;
char addr[30];}stud[40];
可以用fread 和 fwrite 來進行資料的操作:
for (i=0;i<40;i++)
fread(&stud [ i ], sizeof(struct student-type) , 1 , fp);
for (i=0;i<40,i++)
fwrite(&stud [ i ], sizeof(struct student-type) , 1 , fp);
使用舉例:
例1、 從鍵盤輸入4個學生的有關資料,然後把它們轉存 到磁碟檔案上去。
#include <stdio.h>
#define SIZE 4
struct student_type
{ char name[10];
int num;
int age;
char addr[15];
}stud[SIZE]; /* 定義結構 */
void save( )
{FILE *fp;
int i;
if((fp=fopen("stu-list","wb"))==NULL)
{ printf("cannot open file\n");
return;}
for(i=0;i<SIZE;i++)/* 二進位制寫 */
if(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1)
printf( “ file write error\n ” );/* 出錯處理 */
fclose(fp); } /* 關閉檔案 */
main()
{int i;
for(i=0;i<SIZE;i++)/* 從鍵盤讀入學生資訊 */
scanf("%s%d%d%s",stud[i].name,&stud[i].num,
&stud[i].age,stud[i].addr);
save( );}/* 呼叫 save ()儲存學生資訊 */
執行情況如下:
輸入4個學生的姓名、學號、年齡和地址:
Z hang 1001 19 room - 101
F un 1002 20 room - 102
T an 1003 21 room - 103
L ing 1004 21 room - 104
#include <stdio.h>
#define SIZE 4
struct student_type
{ char name[10];
int num;
int age;
char addr[15];
}stud[SIZE];
main( )
{ int i;
FILE*fp;
fp=fopen("stu-list","rb");
for(i=0;i<SIZE;i++)
{fread(&stud[i],sizeof(struct student_type),1,fp);
printf("%\-10s %4d %4d %\-15s\n",stud[i].name,
stud[i].num,stud[i]. age,stud[i].addr); }
fclose (fp);}
螢幕上顯示出以下資訊:
Z hang 1001 19 room - 101
F un 1002 20 room - 102
T an 1003 21 room - 103
L ing 1004 21 room - 104
#include <stdio.h>
#define SIZE 4
struct student_type
{ char name[10];
int num;
int age;
char addr[15];
}stud[SIZE];
main( )
{ int i;
FILE*fp;
fp=fopen("stu-list","rb");
for(i=0;i<SIZE;i++)
{fread(&stud[i],sizeof(struct student_type),1,fp);
printf("%\-10s %4d %4d %\-15s\n",stud[i].name,
stud[i].num,stud[i]. age,stud[i].addr); }
fclose (fp);}
螢幕上顯示出以下資訊:
Z hang 1001 19 room - 101
F un 1002 20 room - 102
T an 1003 21 room - 103
L ing 1004 21 room - 104
如果已有的資料已經以二進位制形式儲存在一個磁碟檔案
“stu - dat”中,要求從其中讀入資料並輸出到
“stu - list”檔案中,可以編寫一個load函式, 從磁碟檔案中讀二進位制資料。
void load( )
{FILE *fp;int i;
if((fp=fopen("stu-dat","rb"))==NULL)
{ printf("cannot open infile\n");
return;}
for(i=0;i<SIZE;i++)
if(fread(&stud[i],sizeof(struct student_type),1,fp)!=1)
{if(feof(fp)) {fclose(fp); return;}
printf("file read error\n");}
fclose (fp) ; }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69914734/viewspace-2655145/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 物聯網學習教程—檔案的讀寫一
- 物聯網學習教程—檔案的定位
- 物聯網學習教程——執行緒同步與互斥:讀寫鎖執行緒
- 物聯網學習教程——二維陣列的引用陣列
- 物聯網學習教程——if語句
- 物聯網學習教程—Linux 可執行檔案結構與程式結構Linux
- 物聯網學習教程——switch語句
- 物聯網學習教程——if語句2
- python學習之讀寫檔案Python
- 物聯網學習教程—const用法的體會
- 物聯網學習教程—字串與指標字串指標
- 物聯網學習教程—const關鍵字
- 物聯網學習教程——執行緒池執行緒
- 物聯網學習教程—列舉型別型別
- 物聯網學習教程—c++學習應該注意的點C++
- 物聯網學習教程——一維陣列的引用陣列
- 物聯網學習教程—函式的返回值函式
- 物聯網學習教程—Const用法和體會
- 物聯網學習教程—多型的實現機制多型
- C++學習筆記----讀寫檔案C++筆記
- 物聯網學習教程—Linux系統程式設計之多工實現(二)Linux程式設計
- 物聯網學習教程——格式輸入與輸出
- 物聯網學習教程—— 執行緒私有資料執行緒
- 物聯網學習教程—用typedef定義型別型別
- 物聯網的學習路線
- 【python系統學習17】python中的檔案讀寫Python
- 物聯網學習教程— 多維陣列與指標陣列指標
- 物聯網學習教程—函式引數和函式的值函式
- 檔案的讀寫
- 物聯網學習教程Linux系統程式設計之檔案描述符的複製:dup()和dup2()Linux程式設計
- 物聯網學習教程— 字元指標作函式引數字元指標函式
- 物聯網學習教程—常見錯誤和程式除錯除錯
- 讀懂物聯網
- Python 簡明教程 --- 24,Python 檔案讀寫Python
- 普通檔案的讀寫
- 物聯網學習教程——邏輯運算子和邏輯表示式
- 物聯網學習教程—定義結構體型別變數的方法結構體型別變數
- 檔案排版(文字檔案讀寫)