C語言檔案操作 開 關 讀 寫

2021-10-01 03:28:56 字數 3800 閱讀 1250

概述

1.乙個c檔案是乙個位元組流或二進位製流,它把資料看作是一連串的字元(位元組),而不考慮記錄的界限。在c語言中對檔案的訪問是以字元(位元組)為單位的。

(注:流式檔案 —— 輸出時不會自動增加回車換行符以作為記錄結束的標誌,輸入時不以回車換行符作為記錄的間隔)

2.ansi c標準使用緩衝檔案系統處理文字檔案和二進位制檔案。每個被使用的檔案都在記憶體中開闢乙個區,用來存放檔案的有關資訊,這些資訊是儲存在乙個結構體變數中的,該結構體型別是由系統定義的,取名為file

開啟和關閉檔案

讀寫之前開啟檔案,使用完畢後關閉檔案

fopen函式

1.函式原型:file *fopen(const char *filename,const char *mode)

2.呼叫方式:

file *fp;

fp=fopen

(檔名,開啟方式)

;

3.若開啟成功:返回乙個指向file型別結構體變數的指標

若開啟出錯:返回乙個空指標值null(null在stdio.**件中被定義為0)

建議用以下方法開啟乙個檔案:

file *fp;if(

(fp=

fopen

("myfile"

,"mode"))

==null

)

4.fopen函式原型中的mode是開啟檔案的方式,具體如下表:

5.向計算機輸入文字檔案時,計算機將回車換行符轉換為乙個換行符,在輸出時把換行符轉換成為回車和換行兩個字元。而在用二進位制檔案時,不進行這種轉換,在記憶體中的資料形式與輸出到外部檔案的資料形式完全一致。

6.在程式開始執行時,系統自動開啟三個標準檔案:標準輸入、標準輸出、標準出錯輸出。通常這三個檔案始終與終端相連,因此我們所用到的從終端輸入或輸出都不需要開啟終端檔案。系統自動定義了3個指標檔案:stdin,stdout,stderr,分別指向終端輸入、終端輸出、標準出錯輸出(從終端輸出)。如果程式指定要從stdin所指的檔案輸入資料,就是指從終端鍵盤輸入資料。

fclose函式

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

2.呼叫形式:

fclose

(fp)

;

2.若執行了關閉操作則返回0,否則返回eof(-1)。【注】eof不是可輸出字元

讀寫檔案

fread函式和fwrite函式

作用:fread和fwrite函式一般用於二進位制檔案的輸入輸出,因為它們是按照資料塊的長度來處理輸入輸出的,在字元發生轉換的情況下結果可能會與設想的有偏差。

1.函式原型:

size_t __cdecl fread

(void

* __restrict__ _dstbuf,size_t _elementsize,size_t _count,file * __restrict__ _file)

;

size_t __cdecl fwrite

(const

void

* __restrict__ _str,size_t _size,size_t _count,file * __restrict__ _file)

;

2.呼叫形式:

fread

(檔案中的資料被讀出後的存放位址,讀出一項的位元組數,讀出幾項,檔案指標)

;

fwrite

(將要寫入檔案的資料的存放位址,寫入一項佔的位元組數,寫入幾項,檔案指標)

;

3.若fread或fwrite呼叫成功,則函式返回值為讀出或寫入的項數

例子:

file *fp_w,

*fp_r;

int s[size]=;

if((fp_w=

fopen

("myfile"

,"wb"))

==null

)//利用返回值判斷是否成功執行

for(

int i=

0;ifclose

(fp_w);if

((fp_r=

fopen

("myfile"

,"rb"))

==null

)for

(int i=

0;ifclose

(fp_r)

;

fprintf函式和fscanf函式

作用:fprintf函式和fscanf函式是格式化讀寫函式,和printf,scanf作用相仿,只是前者讀寫物件是磁碟檔案,後者是終端。

1.函式原型:

int __cdecl fscanf

(file * __restrict__ _file,

const

char

* __restrict__ _format,...);

int __cdecl fprintf

(file * __restrict__ _file,

const

char

* __restrict__ _format,...);

2.呼叫形式:

fscanf

(檔案指標,格式字串,輸入列表)

;//從檔案按格式讀出

按照規定格式將磁碟檔案上的資料送給輸入列表中對應的變數。

fprintf

(檔案指標,格式字串,輸出列表)

;//按格式寫入檔案

將輸出列表中變數的值按照格式字串規定的格式輸出到fp指向的檔案上。

3.fscanf若正常執行,返回的是從檔案實際讀取的變數個數,出錯或者到結尾返回eof

fprintf若正常執行,會返回寫入檔案的位元組數,否則返回負數

【注】在磁碟與記憶體頻繁交換資料的情況下,盡量不使用fprintf和fscanf.

fgets函式和fputs函式

作用:fgets用於從指定檔案讀入乙個字串,fputs用於向指定檔案輸出乙個字串

fgets

(str,n,fp)

;//從fp指向的檔案輸入n-1個字元,然後在最後加乙個'\0'字元,然後後存至字元陣列str,最後返回str首位址

futs

(str,fp)

;//將字串輸出到fp指向的檔案,輸出成功返回0,失敗返回eof

fputc函式和fgetc函式

作用:fputc函式用於把乙個字元寫到磁碟檔案,fgetc函式用於從指定檔案讀入乙個字元

fputc

(ch,fp)

;//若輸出成功,返回ch,否則返回eof(-1)

ch=

fgetc

(fp)

;//若遇到檔案結束符,返回eof

c 中檔案的開關讀寫基本操作

目錄 今天寫資料結構的時候涉及到了檔案的操作,因為已經碰到好多次了而我總是對這部分不太熟悉,於是索性就來寫個簡單的應用總結吧。一 開啟檔案 二 關閉檔案 三 讀寫檔案 文字檔案和二進位制檔案 1 文字檔案 2 二進位制檔案 3 讀寫資料塊 四 檢測eof 五 檔案定位 還有更多的細節就不在這裡深究了...

c語言檔案讀寫操作

檔案讀取操作 file fp char fname d printf s n fname fp fopen fname,r fscanf fp,d buf printf d buf 0 fclose fp fread,與fwrite是binary stream input output二進位製流的輸...

C語言檔案讀寫操作

標頭檔案 include include include include 用於生成隨機數 建立檔案指標 file fp 檢測檔案是否開啟成功 if fp fopen f52.txt w null 如果檔案不存在,則會新建。w 即設定操作為 write 寫操作 隨機的產生,設定時間種子 srand t...