免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
編程中國

它們分別將字符串轉(zhuǎn)換為整型、實型和長整型。使用時請將其包含的頭文件m a t h . h或s t d l i b . h寫在程序的前面。
[例8-8] 將輸入的不同格式數(shù)據(jù)以字符串輸入,然后將其轉(zhuǎn)換進(jìn)行文件的成塊讀寫。
#include
#include
m a i n ( )
{
FILE *fp1;
char *temp;
int i;
struct stu{ / *定義結(jié)構(gòu)體類型* /
char name[15]; / *姓名* /
char num[6]; / * 學(xué)號* /
float score[2]; / * 二科成績* /
} s t u d e n t ;
if ((fp1=fopen('test.txt','wb'))==NULL) / * 打開文件* /
{
printf('cannot open file');
e x i t ( 0 ) ;
}
for( i=0;i<2;i++)>
printf('input name:');
g e t s ( s t u d e n t . n a m e ) ; / *輸入姓名* /
printf('input num:');
g e t s ( s t u d e n t . n u m ) ; / * 輸入學(xué)號* /
printf('input score1:');
g e t s ( t e m p ) ; / *輸入成績* /
s t u d e n t . s c o r e [ 0 ] = a t o f ( t e m p ) ;
printf('input score2:');
g e t s ( t e m p ) ;
s t u d e n t . s c o r e [ 1 ] = a t o f ( t e m p ) ;
f w r i t e ( & s t u d e n t , s i z e o f ( s t u d e n t ) , 1 , f p 1 ) ; / *成塊寫入到文件* /
}
f c l o s e ( f p 1 ) ;
if ((fp1=fopen('test.txt','rb'))==NULL)
{
printf('cannot open file');
e x i t ( 0 ) ;
}
p r i n t f ( ' - - - - - - - - - - - - - - - - - - - - - \ n ' ) ;
p r i n t f ( ' % - 1 5 s % - 7 s % - 7 s % - 7 s \ n ' , ' n a m e ' , ' n u m ' , ' s c o r e 1 ' , ' s c o r e 2 ' ) ;
p r i n t f ( ' - - - - - - - - - - - - - - - - - - - - - \ n ' ) ;
for (i=0;i<>
{
f r e a d ( & s t u d e n t , s i z e o f ( s t u d e n t ) , 1 , f p 1 ) ;
p r i n t f ( ' % - 1 5 s % - 7 s % 7 . 2 f % 7 . 2 f \ n ' , s t u d e n t . n a m e , s t u d e n t . n u m ,
s t u d e n t . s c o r e [ 0 ] , s t u d e n t . s c o r e [ 1 ] ) ;
}
f c l o s e ( f p 1 ) ;
}

8.1.3 隨機(jī)讀寫文件
隨機(jī)對文件的讀寫是指在文件內(nèi)部任意對文件內(nèi)容進(jìn)行訪問,這也就需要對文件進(jìn)行詳
細(xì)的定位,只有定位準(zhǔn)確,才有可能對文件隨機(jī)訪問。
C語言提供了用于文件定位的函數(shù),它的作用是使文件指針移動到所需要的位置。
int fseek(FILE *fp,long d,int pos)
f p是文件指針,d是位移量,p o s是起始點。
P o s的取值為:
0 :文件開始處
1 :文件的當(dāng)前位置
2 :文件的尾部
位移量d是l o n g型的數(shù)據(jù),可以為正或負(fù)值。表示從起始點向下或向上的指針移動。函數(shù)
的返回值若操作成功為0,操作失敗為非零。
例如:f s e e k ( f p , 5 L , 0 );將文件指針從文件頭向下移動5個字節(jié)。
f s e e k ( f p , - 1 0 L , 2 );將文件指針從當(dāng)前位置向上移動1 0個字節(jié)。
rewind() 將文件指針移動到文件頭。
ftell(FILE *fp) 返回文件指針的當(dāng)前位置。
[例8-9] 寫入5個學(xué)生記錄,記錄內(nèi)容為學(xué)生姓名、學(xué)號、兩科成績。寫入成功后,隨機(jī)
讀取第三條記錄,并用第二條記錄替換。
#include
#include
#define n 5
m a i n ( )
{
FILE *fp1; / *定義文件指針* /
char *temp;
int i,j;
struct stu{ / * 定義學(xué)生記錄結(jié)構(gòu)* /
char name[15];
char num[6];
float score[2];
} s t u d e n t [ n ] ;
if ((fp1=fopen('test.txt','wb'))==NULL) / *以二進(jìn)制只寫方式打開文件* /
{
printf('cannot open file');
e x i t ( 0 ) ;
}
for( i=0;i<>
{
printf('input name:'); / *輸入姓名* /
g e t s ( s t u d e n t [ i ] . n a m e ) ;
printf('input num:');
g e t s ( s t u d e n t [ i ] . n u m ) ; / *輸入學(xué)號* /
printf('input score1:');
g e t s ( t e m p ) ; / *輸入一科成績* /
s t u d e n t [ i ] . s c o r e [ 0 ] = a t o f ( t e m p ) ;
printf('input score2:');
g e t s ( t e m p ) ; / * 輸入第二科成績* /
s t u d e n t [ i ] . s c o r e [ 1 ] = a t o f ( t e m p ) ;
fwrite(&student[i],sizeof(struct stu),1,fp1);成 塊/*寫入*/
}
fclose(fp1); /*關(guān)閉* /
if ((fp1=fopen('test.txt','rb+'))==NULL)
{ /*以可讀寫方式打開文件* /
printf('cannot open file');
e x i t ( 0 ) ;
}
p r i n t f ( ' - - - - - - - - - - - - - - - - - - - - - \ n ' ) ;
p r i n t f ( ' % - 1 5 s % - 7 s % - 7 s % - 7 s \ n ' , ' n a m e ' , ' n u m ' , ' s c o r e 1 ' , ' s c o r e 2 ' ) ;
p r i n t f ( ' - - - - - - - - - - - - - - - - - - - - - \ n ' ) ;
for (i=0;i<>
{ /*顯示全部文件內(nèi)容* /
fread(&student[i],sizeof(struct stu),1,fp1);
p r i n t f ( ' % - 1 5 s % - 7 s % 7 . 2 f % 7 . 2 f \ n ' , s t u d e n t [ i ] . n a m e , s t u d e n t [ i ] . n u m ,
s t u d e n t [ i ] . s c o r e [ 0 ] , s t u d e n t [ i ] . s c o r e [ 1 ] ) ;
}
/ *以下進(jìn)行文件的隨機(jī)讀寫* /
fseek(fp1,3*sizeof(struct stu),0)/;* 定位文件指針指向第三條記錄*/
fwrite(&student[1],sizeof(struct stu),1,fp1);
/ * 在第三條記錄處寫入第二條記錄* /
rewind(fp1); /*移動文件指針到文件頭* /
p r i n t f ( ' - - - - - - - - - - - - - - - - - - - - - \ n ' ) ;
p r i n t f ( ' % - 1 5 s % - 7 s % - 7 s % - 7 s \ n ' , ' n a m e ' , ' n u m ' , ' s c o r e 1 ' , ' s c o r e 2 ' ) ;
p r i n t f ( ' - - - - - - - - - - - - - - - - - - - - - \ n ' ) ;
for (i=0;i<>
{ /*重新輸出文件內(nèi)容* /
fread(&student[i],sizeof(struct stu),1,fp1);
p r i n t f ( ' % - 1 5 s % - 7 s % 7 . 2 f % 7 . 2 f \ n ' , s t u d e n t [ i ] . n a m e , s t u d e n t [ i ] . n u m ,
s t u d e n t [ i ] . s c o r e [ 0 ] , s t u d e n t [ i ] . s c o r e [ 1 ] ) ;
}
f c l o s e ( f p 1 ) ; / *關(guān)閉文件* /
}


程序的第二次輸出,即隨機(jī)訪問后,文件中會有兩條相同的記錄。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
C語言學(xué)習(xí)教程第十章-文件(6)
C語言中基礎(chǔ)小問題詳細(xì)介紹
C語言程序設(shè)計
C 的文件操作
文件操作 FILE結(jié)構(gòu)體(C語言版)
9-2 隨機(jī)存取會員信息
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服