c語言簡單入門之檔案操作

2021-08-27 21:22:35 字數 3650 閱讀 3878

檔案的開啟與關閉(檔案的操作要求引入標頭檔案stdio.h)

1,檔案型指標變數

file *fp;

fp指的是乙個指向file型別結構體的指標變數。

我們使fp指向某乙個檔案的結構體變數,從而通過該結構體變數中的檔案資訊能夠訪問該檔案。

2,file型別的陣列

file f[5];

定義了乙個結構體陣列f,它有5個元素,可以用來存放5個檔案的資訊。

一,檔案的開啟(fopen函式)的使用和引數解釋

file *fp;

fp = fopen(檔名,使用檔案的方式)

注意:(1)檔名,就是需要開啟的檔案的檔名,記得帶有路徑。

(2)使用檔案的方式(「讀」或者「寫」)。

「r」        (唯讀)位輸入開啟乙個文字檔案

「w」       (只寫)為輸出開啟乙個文字檔案

「a」        (追加)向文字檔案末尾增加資料

「rb」      (唯讀)為輸入開啟乙個二進位制檔案

「wb」     (只寫)為輸出開啟乙個二進位制檔案

「ab」     (追加)向二進位制檔案末尾增加資料

「r+」     (讀寫)為讀/寫開啟乙個文字檔案

「w+」     (讀寫)為讀/寫建立乙個新的文字檔案

「a+」    (讀寫)為讀/寫開啟乙個文字檔案

「rb+」   (讀寫)為讀/寫開啟乙個二進位制檔案

「wb+」  (讀寫)為讀/寫建立乙個新的二進位制檔案

「ab+」   (讀寫)為讀/寫開啟乙個二進位制檔案

開啟方式有以下幾點注意的:

a,凡是用「r」開啟的檔案,該檔案必須已經存在,且只能從該檔案讀出;

b,用「w」開啟檔案只能向該檔案寫入,若開啟的檔案不存在,則以指定的檔名建立檔案,若開啟的檔案已經存在,則刪除檔案,從新建立新的檔案;

c,若向乙個已經存在的檔案追加新的資訊,只能用「a」方式開啟檔案,檔案必須是存在的,否則報錯;

d,開啟乙個檔案時,如果出錯,fopen將返回乙個空指標null;程式可以用此來判斷是否開啟檔案,並作相應的處理。

e,把乙個文字檔案讀入記憶體時,要將ascii碼轉換成二進位製碼,而把檔案以文字方式寫入磁碟時,也要把二進位製碼轉換成ascii碼,因此文字檔案的讀寫要花費較多的轉換時間,對二進位制檔案的讀寫不存在這種轉換。

(3)讓哪個指標變數指向被開啟的檔案。

文字都看累了,舉個栗子吧:

#include #include #include void main()

else

}

vs 2017中執行c專案操作檔案時fopen報錯的解決   

二,檔案的關閉(fclose函式)

fclose(檔案指標);

使函式指標變數不再指向該檔案,也就是檔案指標變數與檔案脫鉤,不能讀寫檔案了

返回值:

(1)關閉成功返回 0

(2)關閉失敗返回eof (-1)c語言中巨集定義的

三,檔案的讀寫

對檔案的讀寫是最常用的檔案操作,在c語言中提供了多種檔案讀寫的函式;

一次寫乙個

fputc(ch,fp);

函式原型:

int fputs(char ch,file *fp);

將字元ch的值輸出到fp所指向的檔案中去;每寫入乙個字元,檔案內部指標向後移動乙個位元組;

返回值:

成功寫入返回寫入的字元,失敗返回eof;

例題:

#include #include #include /*********

*字元的寫入*

*********/

void main()

printf("輸入你想寫進檔案裡面的字元:");

ch = getchar();

ch = getchar();

while (ch != eof)

fclose(fp);//記得關閉檔案

}

一次寫一行

fputs()

int fupts(const char *s,file *fp);

返回值:

成功返回非負值,失敗返回eof(-1);

格式化寫

fprintf()

函式原型:int fpintf(file *fp,const char *format[,argument]............);

#include void main( void )

一次讀乙個字元

ch = fgetc(fp);

是從開啟的檔案中讀取乙個字元寫入fp檔案中;

注意:必須以讀或者讀寫的方式開啟檔案

在檔案內部有有乙個位置指標,用來指向當前讀寫的字元;

在檔案開啟時,該指標總是指向檔案的第乙個位元組,因此使用fgetc函式後,指標指向了下乙個位元組,所有我們可以多次用fgetc函式來讀取多個字元;

檔案指標和檔案內部指標不是一回事

檔案指標是指向整個檔案的,必須程式中定義說明,只要不從新賦值,檔案指標的值是不變的;

檔案內部指標的位置是用來指示檔案內部的當前讀寫位置,每讀寫一次,就向後移動,由系統自動呼叫,無須定義;

#include #include #include /*********

*字元的寫入*

*********/

void main()

while (ch != eof)//eof的輸入就是ctrl+z

fclose(fp);//記得關閉檔案

}

補充一下:因為二進位制裡面是有-1的。所以不能再用eof來判斷二進位制檔案讀寫了

要使用乙個自帶的函式feof()

例如:while(!feof(fp));

feof這個函式也可以用來判斷文字檔案的讀取;

一次讀一行

fgets()

函式的原型:char *fgets(char * string,int n,file *file);

n:緩衝區長度

file:需要讀取的檔案指標

返回值:

達到檔案尾或者出錯返回null;

讀取成功返回讀取的字串,一行行讀取,讀入的位元組放入緩衝區,緩衝區以null結尾;

#include #include void main()

while (fgets(filename, 20, fp) != null)

printf("\n");

fclose(fp);

}

格式化讀

fscanf()

函式原型:int fscanf(file *fp,const char *format[,argument]............);

format:控制怎麼轉換引數,以便於對他們賦值

返回值:

輸入錯誤格式不匹配或者任意轉換前已經達到檔案尾端,返回eof(-1);

#include #include void main( )

}

c語言入門 《檔案操作》

3 關閉檔案 總結開啟檔案函式 fopen const char const char 第乙個引數 檔案路徑 1 相對路徑 2 絕對路徑 例如 1 相對路徑 和.c檔案在同一檔案目錄下,可直接寫檔名稱.檔案型別 fopen text.txt w 2 絕對路徑 fopen d studyfile te...

C語言檔案操作(入門級)

今天c語言實訓第一天剛剛接觸檔案操作,從一臉蒙蔽到基本會用僅僅只能分享給新手。套路基本一直,若想用檔案操作基本都有以下內容 file fp if fp fopen admin.txt w null feile fopen const char filename,const char mode 小括號...

mybatis入門之簡單操作

1.根據使用者id查詢使用者 測試類 public class test catch ioexception e 執行結果 2.根據使用者名稱模糊查詢使用者 實體bean public class user public void setid integer id public string get...