C語言檔案操作

2021-10-08 17:40:30 字數 4700 閱讀 6513

二、檔案其他操作

1.開啟檔案

1.1 函式原型:

file

*fopen

(const char *filename,

const char *mode)

;

引數1:檔案路徑

引數2:檔案的開啟方式

返回值:file*,即

檔案指標,也就是物理記憶體上的這塊空間的首位址。

1.2 檔案的開啟方式

r:唯讀,不可修改,檔案必須存在,不存在fopen會執行失敗

w:可讀可寫,刪除寫,即檔案原本有內容, w 開啟會把內容刪除,重新寫入,檔案不存在時,會建立檔案

a: 可讀可寫,接著寫,即檔案原本有內容, a 開啟內容保留,繼續寫入,檔案不存在時,會建立檔案

r+:可讀可寫,檔案必須存在,不存在fopen會執行失敗

w+:同w

a+:同a

rb、wb、ab:二進位制模式

2.關閉檔案

函式原型:

int fclose

(file

*stream)

;

引數:目標檔案指標

3.讀寫操作

3.1 fwirte( ) 和 fread( )

二進位制檔案方式。fwirte( )是一次寫入指定位元組數, fread( )是一次讀指定位元組數。一般要儲存的資料是比如陣列,結構體等非字元型的複雜資料,可以採用這種方式。

3.1.1 fwirte( )

函式原型:

size_t fwrite

(const

void

* buffer, size_t size, size_t count,

file

* stream)

;

引數1:要獲取資料的位址

引數2:sizeof (type) ,即要寫入內容的單位元組數

引數3:strlen( ) ,即要進行寫入size位元組的元素個數

引數4:目標檔案指標

返回值:實際寫入的元素個數

3.1.2 fread( )

函式原型:

size_t fread

(void

*buffer, size_t size, size_t count,

file

*stream)

;

引數1:用於接收資料的記憶體位址

引數2:sizeof (type) ,即要讀出內容的單位元組數

引數3:strlen( ) ,即要讀出size位元組的元素個數

引數4:目標檔案指標

返回值:實際讀取的元素個數

3.1.3 **示例

// fwirte( )

#include

struct class

;int main()

,};//wb 讀寫模式,檔案不存在會建立,存在會刪除原有內容並寫入

file

*pfile =

fopen

("student.txt"

,"wb");

fwrite

(&c,

sizeof

(c),

2,pfile)

;//寫

fclose

(pfile)

;//關閉並儲存

return0;

}

// fread( )

#include

struct class

;int main()

,};

struct classc[

2];//rb 唯讀模式,檔案不存在會開啟失敗

file

*pfile =

fopen

("student.txt"

,"rb");

fread

(&c,

sizeof

(c),

1,pfile)

;//讀

fclose

(pfile)

;//關閉並儲存

printf

("%s %s %s"

,c[0

].number,c[0]

.name,c[0]

.score)

;printf

("%s %s %s\n"

,c[1

].number,c[1]

.name,c[1]

.score)

;return0;

}

3.2 fputs( ) 和 fgets( )

3.2.1 fputs( )

函式原型:

int fputs

(const char *str ,

file

*stream)

;

引數1:輸入的字串

引數2:檔案指標

3.2.2 fgets( )

函式原型:

char *

fgets

(char *str,int n,

file

*stream)

;

3.3.3 示例

// fputs()  一次寫入一行

#include

int main()

// fgets()  一次讀一行

#include

int main()

3.3 fscanf( )和fprintf( )

3.3.1 fscanf( )

函式原型:

int fscanf

(file

* stream,

const char * format,

[argument...])

;

功能:根據資料格式(format)從輸入流(stream)中讀入資料(儲存到argument),與fgets的差別在於,fscanf遇到空格和換行時結束,注意空格時也結束,fgets遇到空格不結束 。

3.3.2 fprintf( )

函式原型:

int fprintf

(file

*stream,

const char *format,

[ argument ]

...)

;

3.3.3 示例

// fprintf()

#include

int main()

// fscanf()

#include

int main()

1.fseek( )

設定檔案指標的位置。

函式原型:

int fseek

(file

*stream,long offset,int origin)

;

引數1:檔案指標

引數2:檔案指標移動量

引數3:起始位置

示例:

//設定檔案指標指向頭

fseek

(pfile,

0l,_seek_set_)

;

//從頭往後10個位元組

fseek

(pfile,

10l,_seek_set_)

;

//向右10個位元組

fseek

(pfile,

10l,_seek_cur_)

;

//檔案指標指向檔案末尾

fseek

(pfile,

0l,_seek_end_)

;

//從檔案末尾向前10個位元組

fseek

(pfile,

-10l,_seek_end_)

;

2.ftell( )

返回檔案指標當前位置的下標。

函式原型:

long ftell

(file

*stream)

;

引數:檔案指標

返回值:long型別

示例:

long int a;

a =ftell

(pfile)

;printf

("%d\n"

,a);

c語言檔案操作

rt null ch fgetc fp while ch eof fclose fp 本 例程式的功能是從檔案中逐個讀取字元,在螢幕上顯示。程式定義了檔案指標fp,以讀文字檔案方式開啟檔案 d jrzh example ex1 1.c 並使fp指向該檔案。如開啟檔案出錯,給出提示並退出程式。程式第1...

C語言檔案操作

1.首先要理解幾個概念 檔案 按一定規則儲存在磁碟上的資料集合。檔名 能唯一標識某個磁碟檔案的字串。形式 碟符 路徑 檔名.副檔名 二進位制檔案 資料以二進位制形式在儲存在磁碟上。裝置檔案 輸入 輸出裝置 標準輸入檔案 鍵盤 標準輸出檔案 標準錯誤輸出檔案 顯示器 檔案型指標 c語言是通過名為fil...

C語言檔案操作

1,兩種檔案訪問方式 輸入,輸出方式 順序訪問 直接訪問 2,資料的兩種存放形式 文字檔案 二進位制檔案 3.檔案指標 定義檔案型別指標變數的一般形式 file 指標變數名 例如 file fp1,fp2 4.開啟檔案 在使用檔案之前,需開啟檔案.在c裡使用fopen函式開啟檔案.格式為 fopen...