青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

C語(yǔ)言文件操作函數(shù) 轉(zhuǎn)

Posted on 2007-12-13 17:09 T.S Liu 閱讀(412) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): C++

文章分類(lèi)"c/c++"里有,但只有基本說(shuō)明,怕以后遺忘。看這篇相對(duì)詳細(xì)點(diǎn)就留下做個(gè)備忘)

C語(yǔ)言文件操作函數(shù) http://www.cnblogs.com/nniixl/archive/2007/04/23/724235.aspx

分類(lèi):C/C
13.1C語(yǔ)言文件
1,兩種文件存取方式(輸入,輸出方式)
順序存取
直接存取
2,數(shù)據(jù)的兩種存放形式
文本文件
二進(jìn)制文件
 
 
13.2文件指針
定義文件類(lèi)型指針變量的一般形式:
FILE *指針變量名;
例如:
FILE *fp1,*fp2;
 
 
13.3打開(kāi)文件
在使用文件之前,需打開(kāi)文件.在C里使用fopen函數(shù)打開(kāi)文件.格式為:
fopen(文件名,文件使用方式);
此函數(shù)返回一個(gè)指向FILE類(lèi)型的指針.如:
FILE *fp;
fp=fopen("file_1","r");
如果調(diào)用成功,fp就指向file_1,否則返回為NULL,所以為了保證文件的正確使用,要進(jìn)行測(cè)試.采用如下語(yǔ)句:
If((fp=fopen("file_1","r"))==NULL)
{
printf("Cannot open this file\n");
exit(0);
}
最常用的文件使用方式及其含義如下:
1,"r".為讀而打開(kāi)文本文件.(不存在則出錯(cuò))
2,"rb".為讀而打開(kāi)二進(jìn)制文件.
3,"w".為寫(xiě)而打開(kāi)文本文件.(若不存在則新建,反之,則從文件起始位置寫(xiě),原內(nèi)容將被覆蓋)
4,"wb".為寫(xiě)而打開(kāi)二進(jìn)制文件.
5,"a".為在文件后面添加數(shù)據(jù)而打開(kāi)文本文件.(若不存在,則新建;反之,在原文件后追加)
6,"ab".為在文件后面添加數(shù)據(jù)而打開(kāi)一個(gè)二進(jìn)制文件.
最常用的文件使用方式及其含義如下:
7,"r+".為讀和寫(xiě)而打開(kāi)文本文件.(讀時(shí),從頭開(kāi)始;在寫(xiě)數(shù)據(jù)時(shí),新數(shù)據(jù)只覆蓋所占的空間,其后不變)
8,"rb+".為讀和寫(xiě)而打開(kāi)二進(jìn)制文件.只是在隨后的讀寫(xiě)時(shí),可以由位置函數(shù)設(shè)置讀和寫(xiě)的起始位置.
9,"w+".首先建立一個(gè)新文件,進(jìn)行寫(xiě)操作,隨后可以從頭開(kāi)始讀.(若文件存在,原內(nèi)容將全部消失)
10,"wb+".功能與"w+"同.只是在隨后的讀寫(xiě)時(shí),可以由位置函數(shù)設(shè)置讀和寫(xiě)的起始位置.
最常用的文件使用方式及其含義如下:
11,"a+".功能與"a"相同;只是在文件尾部添加新的數(shù)據(jù)后,可以從頭開(kāi)始讀.
12,"ab+".功能與"a+"相同;只是在文件尾部添加新數(shù)據(jù)之后,可以由位置函數(shù)設(shè)置開(kāi)始讀的起始位置.
 
 
13.4關(guān)閉文件
當(dāng)文件的讀寫(xiě)操作完成之后,使用fclose函數(shù)關(guān)閉文件.格式如下:
fclose(文件指針)
如:fclose(fp);
 

13.5調(diào)用getc(fgetc)和putc(fputc)函數(shù)進(jìn)行輸入和輸出
1,調(diào)用putc(或fputc)函數(shù)輸出一個(gè)字符
調(diào)用形式為:
putc(ch,fp);
功能是:將字符ch寫(xiě)到文件指針fp所指的文件中去.當(dāng)輸出成功,putc函數(shù)返回所輸出的字符;否則,返回一個(gè)EOF值.EOF是在stdio.h庫(kù)函數(shù)文件中定義的符號(hào)常量,其值等于-1.
 
 
13.5調(diào)用getc(fgetc)和putc(fputc)函數(shù)進(jìn)行輸入和輸出
例如:把從鍵盤(pán)輸入的文本按原樣輸出到名為file_1.dat文件中,用字符@作為鍵盤(pán)輸入結(jié)束標(biāo)志.
#include
Void main()
{
FILE *fpout;
char ch;
if(fpout=fpopen("file_1","w")==NULL)
{
printf("Cannot open this file!\n");
exit(0);
}
ch=getchar();
while(ch!='@')
{ fputc(ch,fpout); ch=getchar(); }
fclose(fpout);
}
2.調(diào)用getc(或fgetc)函數(shù)輸入一個(gè)字符
調(diào)用形式為:
ch=getc(pf);
功能是:從pf指定的文件中讀如一個(gè)字符,并把它作為函數(shù)值返回.
例如:把一個(gè)已存在磁盤(pán)上的file_1.dat文本文件中的內(nèi)容,原樣輸出到終端屏幕上.
#include
void main(){
FILE *fpin;
char ch;
if((fpin=fopen("file_1.dat","r"))==NULL)
{ printf("Cann't open this file!\n");exit(0);}
ch=fgetc(fpin);
while (ch!=EOF)
{ putchar(ch); ch=fgetc(fpin);}
fclose(fpin);
}
 

13.6判斷文件結(jié)束函數(shù)feof
EOF可以作為文本文件的結(jié)束 標(biāo)志,但不能作為二進(jìn)制文件的結(jié)束符.feof函數(shù)既可以判斷二進(jìn)制文件,又可以判斷文本文件.
例:編寫(xiě)程序,用于把一個(gè)文本文件(源)復(fù)制到另一個(gè)文件(目的)中,源文件名和目的文件名由命令行輸入.命令形式如下:
可執(zhí)行程序名 源文件名 目的文件名
#include
void filecopy(FILE* ,FILE *);
void main(int argc,char *argv[]){
FILE *fpin,*fpout;
if(argc==3)
{ fpin=fopen(argv[1],"r");
fpout=fopen(argv[2],"w");
filecopy(fpin,fpout);
fclose(fpin);fclose(fpout);
}
else if(argc>3)
printf("The file names too many!!\n";
else
printf("There are no file names for input or output!!\n );
}
void filecopy(FILE *fpin,FILE *fpout)
{
char ch;
ch=getc(fpin);
while(!feof(fpin))
{putc(ch,fpout); ch=getc(fpin);}
}
 

13.7fscanf函數(shù)和fprintf函數(shù)
1,fscanf函數(shù)
fscanf只能從文本文件中按格式輸入,和scanf函數(shù)相似,只不過(guò)輸入的對(duì)象是磁盤(pán)上文本文件中的數(shù)據(jù).調(diào)用形式為:
fscanf(文件指針,格式控制字符串,輸入項(xiàng)表)
例如:fscanf(fp,"%d%d",&a,&b);
fscanf(stdin,"%d%d",&a,&b);
等價(jià)于scanf("%d%d",&a,&b);
3.fprintf函數(shù)
fprintf函數(shù)按格式將內(nèi)存中的數(shù)據(jù)轉(zhuǎn)換成對(duì)應(yīng)的字符,并以ASCII代碼形式輸出到文本文件中.Fprintf函數(shù)和printf函數(shù)相似,只是將輸出的內(nèi)容按格式存放到磁盤(pán)的文本文件中.調(diào)用形式如下:
fprintf(文件指針,格式控制字符串,輸出項(xiàng)表)
如:fprintf(fp,"%d %d",x,y);
以下語(yǔ)句 fprintf(stdout,"%d %d",x,y)
 

13.8fgets函數(shù)和fputs函數(shù)
1,fgets函數(shù)
fgets函數(shù)用來(lái)從文件中讀入字符串.調(diào)用形式如下:
fgets(str,n,fp);
函數(shù)功能是:從fp所指文件中讀入n-1個(gè)字符放入str為起始地址的空間內(nèi);如果在未讀滿n-1個(gè)字符時(shí),則遇到換行符或一個(gè)EOF結(jié)束本次讀操作,并已str作為函數(shù)值返回.
13.8fgets函數(shù)和fputs函數(shù)
2,fputs函數(shù)
fput函數(shù)把字符串輸出到文件中.函數(shù)調(diào)用形式如下:
fputs(str,fp);
注意:為了便于讀入,在輸出字符串時(shí),應(yīng)當(dāng)人為的加諸如"\n"這樣的字符串.
#include <stdio.h>
#include <iostream>
int main(int argc, char *argv[])
{
 char arr[10] ;
 char *ap = "hello!" ;
 FILE *fp ;
 if ((fp = fopen("hello.txt", "wt+")) == NULL)
 {
  printf("error!") ;
  exit(1) ;
 }
    fputs(ap, fp) ;

 rewind(fp) ; //

 fgets(arr, 10, fp) ;
 printf("%s\n", arr) ;
 fclose(fp) ;
 return 0 ;
}


13.9fread函數(shù)和fwrite函數(shù)
例如有如下結(jié)構(gòu)體:
struct st{
char num[8];
float mk[5];
}pers[30];
以下循環(huán)將把這30個(gè)元素中的數(shù)據(jù)輸出到fp所指文件中.
for(i=0;i<30;i++)
fwrite(&pers[i],sizeof(struct st),1,fp);
 

13.9fread函數(shù)和fwrite函數(shù)
以下語(yǔ)句從fp所指的文件中再次將每個(gè)學(xué)生數(shù)據(jù)逐個(gè)讀入到pers數(shù)組中.
i=0;
fread(&pers[i],sizeof(struct st),1,fp);
while(!feof(fp))
{ i++;
fread(&pers[i],sizeof(struct st),1,fp);
}
 

13.10文件定位函數(shù)
1,fseek函數(shù)
fseek函數(shù)用來(lái)移動(dòng)文件位置指針到指定的位置上,接著的讀或?qū)懖僮鲗拇宋恢瞄_(kāi)始.函數(shù)的調(diào)用形式如下:
fseek(pf,offset,origin)
pf:文件指針
offset:以字節(jié)為單位的位移量,為長(zhǎng)整形.
origin:是起始點(diǎn),用來(lái)指定位移量是以哪個(gè)位置為基準(zhǔn)的.
1,fseek函數(shù)
位移量的表示方法
標(biāo)識(shí)符 數(shù)字 代表的起始點(diǎn)
SEEK_SET 0 文件開(kāi)始
SEEK_END 2 文件末尾
SEEK_CUR 1 文件當(dāng)前位置
假設(shè)pf已指向一個(gè)二進(jìn)制文件,則;
fseek(pf,30L,SEEK_SET)
fseek(pf,-10L*sizeof(int),SEEK_END)
對(duì)于文本文件,位移量必須是0;如:
fseek(pf,0L,SEEK_SET)
fseek(pf,0L,SEEK_END)
2. ftell函數(shù)
ftell函數(shù)用以獲得文件當(dāng)前位置指針的位置,函數(shù)給出當(dāng)前位置指針相對(duì)于文件開(kāi)頭的字節(jié)數(shù).如;
long t;
t=ftell(pf);
當(dāng)函數(shù)調(diào)用出錯(cuò)時(shí),函數(shù)返回-1L.
我們可以通過(guò)以下方式來(lái)測(cè)試一個(gè)文件的長(zhǎng)度:
fseek(fp,0L,SEEK_END);
t=ftell(fp);
3.rewind函數(shù)
調(diào)用形式為:
rewind(pf);
函數(shù)沒(méi)有返回值.函數(shù)的功能是使文件的位置指針回到文件的開(kāi)頭.
 

13.10文件應(yīng)用
在磁盤(pán)上的test.txt文件中放有10個(gè)不小于2的正整數(shù),用函數(shù)調(diào)用方式編寫(xiě)程序.要求實(shí)現(xiàn):
1,在被調(diào)函數(shù)prime中,判斷和統(tǒng)計(jì)10個(gè)整數(shù)中的素?cái)?shù)以及個(gè)數(shù).
2,在主函數(shù)中將全部素?cái)?shù)追加到磁盤(pán)文件test.txt的尾部,同時(shí)輸出到屏幕上.
#include
#include
Int prime(int a[],int n)
{
int I,j,k=0,flag=0;
for(i=0;i { for(j=2;j if(a[i]%j==0)
{ flag=0; break;}
else flag=1;
if(flag)
{a[k]=a[i];k++;}
}
return k;
}
void main(){
int n,I,a[10];
FILE *fp;
fp=fopen("test1-2.txt","r+");
for(n=0;n<10;n++)
fscanf(fp,"%d",&a[n]);
n=prime(a,n);
fseek(fp,o,2);
for(i=0;i {printf("%3d",a[i]);
fprintf(fp,"%3d",a[i]);
}
fclose(fp);
}
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            可以免费看不卡的av网站| 久久久综合网站| 亚洲精品国产无天堂网2021| 亚洲欧美日韩成人高清在线一区| 亚洲肉体裸体xxxx137| 欧美一级午夜免费电影| 亚洲一区二区三区高清不卡| 欧美1区2区视频| 久久天堂国产精品| 国产亚洲精品美女| 亚洲欧美日本视频在线观看| 亚洲欧美区自拍先锋| 欧美日韩伦理在线免费| 亚洲国产日韩欧美一区二区三区| 国内精品国产成人| 亚洲欧美日韩在线| 欧美在线短视频| 国产欧美一区二区精品性| 一区二区av在线| 亚洲一区二区三区精品在线| 欧美人与性动交cc0o| 亚洲日本理论电影| aa日韩免费精品视频一| 欧美精品18videos性欧美| 亚洲国产日韩欧美在线99| 亚洲精品少妇网址| 欧美精品日韩一本| 一本色道久久综合狠狠躁篇的优点 | 蜜臀av性久久久久蜜臀aⅴ四虎| 久久综合久久88| 一区在线播放视频| 免费观看一级特黄欧美大片| 亚洲成人资源| 亚洲图色在线| 欧美亚洲日本国产| 黄色成人精品网站| 欧美成人一区二区| 一区二区日韩伦理片| 欧美亚洲视频| 在线观看成人av| 欧美人体xx| 欧美亚洲在线视频| 欧美激情日韩| 亚洲无限av看| 狠狠操狠狠色综合网| 欧美1区3d| 亚洲一区三区在线观看| 久久亚洲精品一区| 亚洲精品一区二区三区婷婷月 | 国产主播一区二区| 蜜臀99久久精品久久久久久软件| 亚洲韩国青草视频| 午夜精品一区二区三区电影天堂| 国产视频久久久久| 欧美成人精品不卡视频在线观看| 91久久精品美女| 性欧美激情精品| 亚洲国产精品成人| 国产精品日韩专区| 欧美www视频| 亚洲欧美日韩中文视频| 亚洲电影中文字幕| 欧美一区二区三区久久精品 | 精品成人国产在线观看男人呻吟| 欧美另类极品videosbest最新版本| 中国成人在线视频| 女同一区二区| 午夜精品久久久久久久白皮肤| 在线高清一区| 国产精品日韩二区| 欧美大片在线看免费观看| 欧美亚洲在线播放| 一本色道久久88精品综合| 欧美成人免费网站| 久久久av毛片精品| 亚洲欧美综合精品久久成人| 亚洲国产精品999| 国产夜色精品一区二区av| 欧美日韩一区二区三区免费| 麻豆精品在线播放| 久久精品官网| 亚洲午夜视频| 99精品视频免费观看视频| 一本一本大道香蕉久在线精品| 国内自拍视频一区二区三区| 欧美色网在线| 欧美精品日韩一区| 男女精品视频| 另类尿喷潮videofree | 欧美日韩小视频| 欧美大片在线观看一区二区| 久久人91精品久久久久久不卡| 暖暖成人免费视频| 久久久久久久综合色一本| 午夜亚洲影视| 亚洲欧美综合v| 午夜精品福利在线观看| 一区二区不卡在线视频 午夜欧美不卡在 | 欧美刺激性大交免费视频| 久久久久久午夜| 欧美在线观看你懂的| 午夜亚洲影视| 性欧美大战久久久久久久免费观看 | 亚洲午夜在线观看视频在线| 99精品视频免费观看视频| 亚洲精品日韩在线观看| 亚洲精品网站在线播放gif| 亚洲国产精品精华液网站| 亚洲电影毛片| 亚洲精品免费在线| 99综合电影在线视频| 在线视频中文亚洲| 亚洲永久免费精品| 欧美一区二区日韩| 久久久噜噜噜久久狠狠50岁| 久久综合九色综合久99| 欧美韩日亚洲| 欧美系列亚洲系列| 另类图片国产| 免费欧美网站| 欧美日韩在线播放一区| 国产精品乱码| 狠狠久久综合婷婷不卡| 亚洲电影免费观看高清完整版在线| 亚洲高清成人| 在线亚洲电影| 久久精品中文字幕一区二区三区| 鲁鲁狠狠狠7777一区二区| 欧美激情中文字幕在线| 亚洲三级毛片| 午夜精品久久久久久久蜜桃app| 久久国产88| 欧美精品日韩一本| 国产三级精品三级| 亚洲黄网站在线观看| 一区二区三区日韩精品视频| 欧美亚洲综合网| 欧美承认网站| 亚洲一区二区免费看| 久久野战av| 国产精品豆花视频| 亚洲国产精品嫩草影院| 亚洲在线一区二区| 久久午夜精品一区二区| 日韩视频第一页| 欧美专区在线观看一区| 欧美日韩另类国产亚洲欧美一级| 国产麻豆综合| 一本一本大道香蕉久在线精品| 久久成人精品| 亚洲美女视频在线观看| 久久精品国产综合精品| 欧美日韩在线视频一区二区| 伊人色综合久久天天五月婷| 亚洲午夜激情免费视频| 欧美高清视频一区二区| 亚洲欧美视频一区二区三区| 欧美成人亚洲成人日韩成人| 国产一区二区三区在线观看视频| aa级大片欧美三级| 欧美va亚洲va香蕉在线| 亚洲欧美一区二区激情| 欧美日韩国产综合视频在线观看 | 在线观看成人网| 午夜精品久久久久久久| 亚洲国产小视频| 久久久国产成人精品| 国产精品女人毛片| 99这里有精品| 亚洲黑丝在线| 久久综合色综合88| 黄色亚洲网站| 久久狠狠亚洲综合| 国产精品99久久久久久有的能看| 欧美高清在线一区二区| 亚洲第一在线综合在线| 久久精品午夜| 欧美一级在线亚洲天堂| 国产精品毛片在线看| 国产精品99久久久久久人| 亚洲国产99| 麻豆av一区二区三区| 亚洲第一福利社区| 久久综合九色欧美综合狠狠| 欧美一区二区三区在线观看| 国产精品一区=区| 性视频1819p久久| 亚洲一区二区三区中文字幕| 国产精品久久久久久福利一牛影视| 一本综合精品| 一区二区免费在线视频| 欧美三级午夜理伦三级中视频| 一区二区av在线| 夜夜嗨av一区二区三区免费区| 欧美日韩中文在线| 午夜电影亚洲| 午夜精品理论片| 精品91在线| 亚洲国产老妈| 国产精品www994|