-
1 # 扶尾貓秋風水清
-
2 # 扶尾貓秋風水清
C語言還提供了用於整塊資料的讀寫函式。可用來讀寫一組資料,如一個數組元素,一個結構變數的值等。
讀資料塊函式呼叫的一般形式為:
fread(buffer,size,count,fp);
寫資料塊函式呼叫的一般形式為:
fwrite(buffer,size,count,fp);
其中:
buffer是一個指標,在fread函式中,它表示存放輸入資料的首地址。在fwrite函式中,它表示存放輸出資料的首地址。
size表示資料塊的位元組數。
count表示要讀寫的資料塊塊數。
fp表示檔案指標。
例如:
fread(fa,4,5,fp);
其意義是從fp所指的檔案中,每次讀4個位元組(一個實數)送入實陣列fa中,連續讀5次,即讀5個實數到fa中。
【例】從鍵盤輸入兩個學生資料,寫入一個檔案中,再讀出這兩個學生的資料顯示在螢幕上。
#include<stdio.h>
structstu
{
charname[10];
intnum;
intage;
charaddr[15];
}boya[2],boyb[2],*pp,*qq;
main()
{
FILE*fp;
charch;
inti;
pp=boya;
qq=boyb;
if((fp=fopen("d:\\jrzh\\example\\stu_list","wb+"))==NULL)
{
printf("Cannotopenfilestrikeanykeyexit!");
getch();
exit(1);
}
printf("\ninputdata\n");
for(i=0;i<2;i++,pp++)
scanf("%s%d%d%s",pp->name,&pp->num,&pp->age,pp->addr);
pp=boya;
fwrite(pp,sizeof(structstu),2,fp);
rewind(fp);
fread(qq,sizeof(structstu),2,fp);
printf("\n\nname\tnumberageaddr\n");
for(i=0;i<2;i++,qq++)
printf("%s\t%5d%7d%s\n",qq->name,qq->num,qq->age,qq->addr);
fclose(fp);
}
本例程式定義了一個結構stu,說明了兩個結構陣列boya和boyb以及兩個結構指標變數pp和qq。pp指向boya,qq指向boyb。程式第16行以讀寫方式開啟二進位制檔案“stu_list”,輸入二個學生資料之後,寫入該檔案中,然後把檔案內部位置指標移到檔案首,讀出兩塊學生資料後,在螢幕上顯示。
回覆列表
C語言還提供了用於整塊資料的讀寫函式。可用來讀寫一組資料,如一個數組元素,一個結構變數的值等。
讀資料塊函式呼叫的一般形式為:
fread(buffer,size,count,fp);
寫資料塊函式呼叫的一般形式為:
fwrite(buffer,size,count,fp);
其中:
buffer是一個指標,在fread函式中,它表示存放輸入資料的首地址。在fwrite函式中,它表示存放輸出資料的首地址。
size表示資料塊的位元組數。
count表示要讀寫的資料塊塊數。
fp表示檔案指標。
例如:
fread(fa,4,5,fp);
其意義是從fp所指的檔案中,每次讀4個位元組(一個實數)送入實陣列fa中,連續讀5次,即讀5個實數到fa中。
【例】從鍵盤輸入兩個學生資料,寫入一個檔案中,再讀出這兩個學生的資料顯示在螢幕上。
#include<stdio.h>
structstu
{
charname[10];
intnum;
intage;
charaddr[15];
}boya[2],boyb[2],*pp,*qq;
main()
{
FILE*fp;
charch;
inti;
pp=boya;
qq=boyb;
if((fp=fopen("d:\\jrzh\\example\\stu_list","wb+"))==NULL)
{
printf("Cannotopenfilestrikeanykeyexit!");
getch();
exit(1);
}
printf("\ninputdata\n");
for(i=0;i<2;i++,pp++)
scanf("%s%d%d%s",pp->name,&pp->num,&pp->age,pp->addr);
pp=boya;
fwrite(pp,sizeof(structstu),2,fp);
rewind(fp);
fread(qq,sizeof(structstu),2,fp);
printf("\n\nname\tnumberageaddr\n");
for(i=0;i<2;i++,qq++)
printf("%s\t%5d%7d%s\n",qq->name,qq->num,qq->age,qq->addr);
fclose(fp);
}
本例程式定義了一個結構stu,說明了兩個結構陣列boya和boyb以及兩個結構指標變數pp和qq。pp指向boya,qq指向boyb。程式第16行以讀寫方式開啟二進位制檔案“stu_list”,輸入二個學生資料之後,寫入該檔案中,然後把檔案內部位置指標移到檔案首,讀出兩塊學生資料後,在螢幕上顯示。