C語言基本概念筆記《七》之檔案及操作檔案的常用函式

2021-08-17 14:31:36 字數 4085 閱讀 4583

1.1建立/開啟檔案

1.2讀檔案/寫檔案

1.3關閉檔案

2.1檔案在外存中:(system i/o)//非緩衝檔案系統,不提供緩衝區

2.2檔案在記憶體中:(standard i/o)//緩衝檔案系統,提供緩衝區

#ifndef _file_defined

struct _iobuf ;

typedef struct _iobuf file;

#define _file_defined

#endif

我們使用時一般不關心細節,

直接用:file *p;//p是乙個指向結構體型別的指標變數

2.1標準輸入輸出函式:

2.1.1.開啟檔案:

函式原型: file *fopen(char *filename, char *mode);

使用: file *fp; fp=fopen(「test.txt」,」r」);

「r」 唯讀開啟乙個檔案

「w」 只寫開啟乙個檔案

「a」 追加開啟乙個檔案,並在檔案末尾寫資料

另外:

「+」代表讀和寫, 如:」r+」 讀寫開啟乙個檔案,允許讀寫

「t」代表文字檔案 「rt」 開啟乙個文字檔案,允許讀//t可以省略不寫

「b」代表二進位制檔案 「rt」 開啟乙個二進位制檔案,允許讀

這三個可以組合在人r w a 三個後面

注意:凡用r開啟檔案,則該檔案必須存在

2.1.2.關閉檔案:

函式原型:int fclose(file *fp);

使用: fclose(fp);

注意:當採用讀的方式開啟檔案則可以不作關操作,寫方式開啟檔案必須最後關閉檔案,

因為當程式結束時,如果快取區尚未充滿,則資料並未寫入磁碟,使用fclose()可以強制將

快取區所有檔案送入磁碟

2.1.3.獲取檔案屬性:

int fileno(file *fp);//返回fp指向的檔案對應的檔案描述字( handle_no),

我覺得就是檔案在記憶體中的編號,檔案描述字事乙個號碼

long filelength(int handle_no);//返回檔案描述字

對應檔案的大小。所以一般組合使用,如下:

int m,size;

m=fileno(fp);

size=filelength(m);//size為檔案的大小

2.1.4.檔案的順序讀寫:

格式化讀寫函式:

格式化讀( 功能:將檔案中的內容按照格式讀到記憶體中):

函式原型:int fscanf(file *fp,」格式化字串」,【輸入項第指標】);

使用:

char name[20],***[5];

file *fp;

fp=fopen("e:\\code\\test.txt","rt");

fscanf(fp,"%s %s",name,***);

格式化寫(功能:將內容按照格式寫到fp指向的檔案中):  

函式原型:int fprintf(file *fp,」格式化字串」,【輸入項位址標】);

使用:

char name[20],***[5];

file *fp;

fp=fopen("e:\\code\\test.txt","r+");

fscanf(fp,"%s %s",name,***);//讀出"heyuan","man"

fprintf(fp,"%s %s",name,***);//寫入"heyuan","man"

字元讀寫函式:

字元讀函式(功能: 每次從檔案中讀出乙個字元):

函式原型:int fgetc(file *fp);

使用:char ch; ch=fgetc(fp);

字元寫函式( 每次向檔案內寫入乙個字元):

函式原型:int fputc(char ch,file *fp);

使用: file *fp; fputc(『a』,fp);

字串讀寫函式:

字串讀函式( 功能:在fp所指位置讀取n個字元並存入,str陣列,

如果讀不到返回null):

函式原型:char * fgets(char *str ,int n,file *fp);

使用:char str[10]; fgets(str,10,fp);

字元寫函式(功能:將字串str寫入fp所指位置,寫入成功返回非零值,

失敗則返回eof):

函式原型:int fputs(char *str,file *fp);

使用: file *fp; fputs(str ,fp);

資料塊讀寫函式:

資料塊讀函式( 功能:從fp所指檔案的當前位置開始一次讀size個位元組,重複count次,

並將讀到的資料存到buffer開始的記憶體中,同時將讀寫位置的指標向後移size*count次,

並返回count值):

函式原型:int fread(void *buffer ,int size,int count,file *fp);

使用:float f[5]; fread(f,4,5,fp)//從fp所指檔案,每次讀四個位元組(乙個float型),

送入f陣列中,重複5次。

資料塊寫函式( 功能:從buffer所記憶體區開始,一次讀size個位元組,重複count次,

並將讀到的資料輸出到fp所指檔案中,同時將讀寫位置的指標向後移size*count次,

並返回count值):

函式原型:int fwrite(void *buffer ,int size,int count,file *fp);

使用:float f[5]; fwrite(f,4,5,fp)//從f陣列中,每次讀四個位元組(乙個float型),

寫入fp所指檔案中,重複5次。

2.1.5檔案的隨機讀寫:

rewind()功能:將檔案內部位置指標移到檔案開始位置):

函式原型:void rewind(file *fp);

使用:rewind(fp);

fseek()功能:將檔案內部位置指標移到檔案開始位置):

函式原型:void fseek(file *fp,long offset,int whence);

使用:fseek(fp,sizeof(int)*n,0); fread(f,sizeof(int)*n,1,fp)//把fp從0位置往後移sizeof(int)*n,並將fp現在所指位置的資料讀到f中。

ftell();//得到檔案當前位置指標,返回結果為-1l,表示出錯

使用:i=ftell(fp);

if(i==-1l) printf(「error!」);

2.1.6.出錯檢查:

函式原型:int feof(file *fp);//判斷fp是否在檔案結束位置,是返回1,否則返回0;

使用: while(feof(fp))

吐槽:

重點內容這一章是真的麻煩。利用課餘總結了兩三天,(還有忙其他事)。現在也就是記住了個概念,使用起來,就會發現還是磕磕絆絆,哎,繼續努力!!!!

C語言基本概念筆記《二》之 語句

1.格式化輸入 scanf d d a,b 輸入 2 3 注意,空格多個或乙個都視為乙個 scanf d d a,b 輸入 2 3 或2,3都可以 scanf d d a,b 輸入 2 3 中間的格式控制不能有 格式化輸出 m.nd 輸出 d格式 寬度為m,精度為n d 意為輸出資料左對齊 2.字元...

C語言基本概念 檔案(二)

怎麼讀寫檔案 檔案的定位 檔案檢測函式 c程式把檔案分為ascii檔案和二進位制檔案。ascii檔案是文字檔案。在c語言中,檔案是乙個位元組流或二進位製流,也就是說,對於輸入輸出的資料都按 資料流 的形式處理。檔案輸入輸出方式也稱訪問方式,c語言中,檔案有兩種訪問方式 順序訪問和直接訪問 格式fil...

C語言 基本概念

c語言的基本概念 1.格式 型別修飾符 變數名初始值.2.定義變數規則 1 不能以數字開頭.2 由下劃線,字母,美元符,數字組成.3 變數名不能重複.4 不要以拼音命名,特別是拼音簡寫.5 駝峰結構 駝峰命名法.6 不能與系統保留字重名.3.編寫 規範 操作符兩個由空格,逗號後面乙個空格.練習1 定...