C 自學筆記

2021-10-25 02:16:18 字數 3606 閱讀 4213

本次記錄檔案操作,還請各位大佬批評指正!

程式執行時產生的資料都屬於臨時資料,程式一旦執行結束都會被釋放。通過檔案可以將資料持久化。c++中對檔案操作需要包含標頭檔案 < fstream >。

檔案型別分為兩種:

1、文字檔案 - 檔案以文字的ascii碼形式儲存在計算機中;

2、二進位制檔案 - 檔案以文字的二進位制形式儲存在計算機中,使用者一般不能直接讀懂它們。

操作檔案的三大類:

1、ofstream:寫操作 0 - output

2、ifstream:讀操作 i - input

3、fstream:讀寫操作

寫檔案步驟如下:

1、包含標頭檔案 #include

2、建立流物件 ofstream ofs;

3、開啟檔案 ofs.open(「檔案路徑」,開啟方式);

4、寫資料 ofs<<「寫入的資料」;

5、關閉檔案 ofs.close();

檔案開啟方式:

開啟方式解釋

ios::in為讀檔案而開啟檔案

ios::out為寫檔案而開啟檔案

ios::binary二進位制方式

ios::ate

初始位置:檔案尾

追加方式寫檔案

ios::trunc

如果檔案存在先刪除,再建立

注意:檔案開啟方式可以配合使用,利用 | 操作符。

例如:用二進位制方式寫檔案 ios::binary | ios::out

#include

#include

#include

#include

//1、包含標頭檔案

using

namespace std;

//文字檔案 寫檔案

void

test01()

intmain()

總結:

1、檔案操作必須包含標頭檔案 fstream;

2、讀檔案可以利用 ofstream 或者 fstream類;

3、開啟檔案時候需要制定操作檔案的路徑以及開啟方式;

4、利用《可以向檔案中寫資料;

5、操作完畢要關閉檔案。

讀檔案與寫檔案步驟相似,但是讀取方式相對較多。

讀檔案步驟如下:

1、包含標頭檔案 #include

2、建立流物件 ifstream ifs;

3、開啟檔案並判斷檔案是否成功開啟 ifs.open(「檔案路徑」,開啟方式);

4、讀資料 四種方式讀取

5、關閉檔案 ifs.close();

#include

#include

#include

#include

//1、包含標頭檔案

using

namespace std;

//讀檔案

void

test01()

//4、讀資料 四種方式讀取

//第一種

char buf[

1024]=

;while

(ifs >> buf)

第二種//char buf[1024] = ;

//while (ifs.getline(buf,sizeof(buf)))

//第三種

//string buf;

//while (getline(ifs,buf))

//第四種 不推薦

//char c;

//while ((c = ifs.get()) != eof) //eof end of file

////5、關閉檔案

ifs.

close()

;}intmain()

總結:

1、讀檔案可以利用 ifstream 或者 fstream類;

2、利用is_open函式可以判斷檔案是否開啟成功;

3、close關閉檔案。

以二進位制的方式對檔案進行讀寫操作,開啟方式要指定為ios::binary

二進位制方式寫檔案主要利用流物件呼叫成員函式 write。

函式原型:ofstream& write(const char * buffer,int len);

引數解釋:字元指標buffer指向記憶體中一段儲存空間;len是讀寫的位元組數。

#include

#include

#include

#include

//1、包含標頭檔案

using

namespace std;

//二進位制檔案 寫檔案

class

person

;void

test01()

; ofs.

write((

const

char*)

&p,sizeof

(person));

//5、關閉檔案

ofs.

close()

;}intmain()

總結:檔案輸出流物件可以通過write函式,以二進位制方式寫資料。

二進位制方式讀檔案主要利用流物件呼叫成員函式read。

函式原型:ifstream& read(char *buffer, int len);

引數解釋:字元指標buffer指向記憶體中一段儲存空間;len是讀寫的位元組數。

#include

#include

#include

#include

//1、包含標頭檔案

using

namespace std;

//讀檔案

class

person

;void

test01()

//4、讀資料

person p;

ifs.

read((

char*)

&p,sizeof

(person));

cout <<

"姓名:"

<< p.m_name <<

"年齡:"

<< p.m_age << endl;

//5、關閉檔案

ifs.

close()

;}intmain()

總結:檔案輸入流物件可以通過read函式,以二進位制方式讀資料。

C 自學筆記

本次記錄結構體,還請各位大佬批評指正!結構體屬於使用者自定義的資料型別,允許使用者儲存不同的資料型別 整型 浮點型 字元型 布林型 即不同資料型別的集合所組成的乙個型別。建立學生資料型別,然後通過學生資料型別建立具體的學生。通過結構體建立變數的方式有三種 1 struct 結構體名 變數名 2 st...

C 自學筆記

本次記錄程式的記憶體分割槽模型,還請各位大佬批評指正!c 程式在執行時,將記憶體大方向劃分為4個區域 1 區 存放函式體的二進位制 有作業系統進行管理 寫的所有 放在該區域 2 全域性區 存放全域性變數和靜態變數以及常量 3 棧區 由編譯器自動分配釋放,存放函式的引數值,區域性變數 4 堆區 由程式...

C 自學筆記

本次記錄函式提高,還請各位大佬批評指正!在c 中,函式的形參列表中的形參是可以有預設值的。語法 返回值型別 函式名 引數 預設值 注意事項 1 如果某個位置有預設引數,那麼從這個位置之後,從左往右都必須有預設值。2 如果函式的宣告有預設引數,那麼函式的實現就不能有預設引數。宣告和實現只能有乙個有預設...