C 學習練習 之檔案操作

2021-10-19 04:20:03 字數 3796 閱讀 6327

c++學習練習

之檔案操作

程式執行時產生的資料都屬於臨時資料,程式一旦執行結束,都會被釋放。

通過檔案可以將資料持久化

c++中對檔案操作需要包含標頭檔案 < fstream >

檔案型別分為兩種:

操作檔案的三大類:

1、ofstream 寫操作

2、ifstream 讀操作

3、fstream 讀寫操作

二、二進位制檔案

三、學習資源

寫檔案步驟:

1、包含標頭檔案 : < fstream>

2、建立流物件 : ofstream ofs;

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

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

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

檔案開啟方式:

開啟方式

解釋ios::in

為讀檔案而開啟檔案

ios::out

為寫檔案而開啟檔案

ios::ate

初始位置:檔案尾

追加方式寫檔案

ios::trunc

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

ios::binary

二進位制方式

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

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

**如下:

#include

using

namespace std;

#include

//文字檔案 寫檔案

void

test01()

intmain()

其中, ofs.open(「data.txt」,ios::out); 如果檔案路徑可以是絕對路徑和相對路徑,這裡用的是相對路徑,執行完畢後,會在該**路徑下建立乙個 data.txt 檔案。

讀檔案步驟:

1、包含標頭檔案 : < fstream>

2、建立流物件 : ifstream ifs;

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

4、讀資料 : 四種方式讀取(**中體現)

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

**如下:

#include

using

namespace std;

#include

#include

//文字檔案 讀檔案

void

test01()

//4、讀資料

//第一種

// char buff[1024] = ;

// while (ifs >> buff)

//第二種

// char buff[1024] = ;

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

//第三種

// string buff;

// while(getline(ifs,buff))

//第四種

char c;

while

((c = ifs.

get())

!=eof

)//5、關閉檔案

ifs.

close()

;}intmain()

讀檔案的方式:

第一種:建立乙個字元陣列,初始化全為0.然後在while迴圈裡將ifs中的資料利用右移運算子(<> buff)一行一行讀到頭之後會返回乙個假的資訊,結束迴圈。最後輸出buff。

第二種:同樣建立字元陣列。利用ifs中的成員函式 ifs.getline(buff,sizeof(buff))1

一行一行獲取資料存入到buff中。

第三種:利用string容器儲存ifs的資料,利用全域性函式getline(ifs,buff)2

,將資料儲存到buff中。

第四種:建立乙個字元c,通過ifs中的get()方法,把字元讀到c中,通過

((c = ifs.get()) != eof) 判斷有沒有讀到沒見尾,然後,輸出c

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

函式原型:

ostream& write(const char * buffer,int len);

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

**如下:

#include

using

namespace std;

#include

//二進位制檔案 寫檔案

class

person

;void

test01()

; ofs.

write((

const

char*)

&p,sizeof

(person));

//5、關閉檔案

ofs.

close()

;}intmain()

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

函式原型:

istream& read(const char * buffer,int len);

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

**如下:

#include

using

namespace std;

#include

//二進位制檔案 讀檔案

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()

學習資源

成員函式getline(char* _str,std::streamsize_count) ↩︎

全域性函式getline(basic_istream<_chart _traits>& __is,

basic_string<_chart _traits _alloc>& __str)

說白了第乙個引數就是輸入流,第二個引數就是準備好的字串。 ↩︎

C語言學習 練習

1.100 200之間的素數怎麼判斷?includeint main if j i printf n return 0 2.求兩個數的最大公約數,最小公倍數?includeint main printf 最大公約數為 d n b printf 最小公倍數為 d n m n b 最小公倍數 兩個數的乘...

python學習練習

1.猜數字遊戲 d python coding utf 8 2019 4 14 10 29 n 1tuichu 1 import random print 20,讓我們一起來玩遊戲吧 20,sep n end n rnum random.randint 1,100 while 1 1 num int...

C語言學習 練習2

1 在字元陣列中指定開始位置插入字串 include include include int main char b 32 int i,j,num printf please input.n scanf s d s a,num,b for i 0 i strlen a num 1 i for j 0...