freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

c語言與程序設計大學教程(cpp教材第二版)四ppt(編輯修改稿)

2024-11-13 03:48 本頁面
 

【文章內容簡介】 文件的打開和關閉 這些標志可以使用 “ |” 符號相連接 , 表示同時設置幾種模式 。 對已打開的文件的讀寫完成后 , 應關閉此文件 , 關閉文件用成員函數(shù) close(), close()是一個沒有參數(shù)且無須指定返回值的函數(shù) 。 2. 使用文件流成員函數(shù) open() 可以使用 open()函數(shù)來打開一個文件 , 其調用形式如下: 文件流對象 .open ( 文件名 ,存取方式 )。 fstream file_object。 ( file_name, access_mode )。 各個參數(shù)的含義與創(chuàng)建文件流方式時相同 。 可以用下面格式打開使用 。 ifstream ifile。 (, ios::in)。 除了 ios::in外還有其它的存取方式標志位如表 。 2021/11/10 52 文件的打開和關閉 表 名 稱 含 義 ios::in 以只讀方式打開文件 (用 ifstream創(chuàng)建對象時默認 ) ios::out 以只寫方式打開文件 (當用于一個沒有 ios::app、 ios::ate或 ios::in的ofstream時 , ios::trunc是默認設置 ) ios::app 以追加方式打開文件 , 即寫在文件尾部 ios::ate 打開一個現(xiàn)成的文件 (無論輸入還是輸出 )并尋找末尾 ios::binary 以二進制方式打開文件 , 缺省時為文本方式 ios::nocreate 如果文件不存在 , 打開操作失敗 (僅打開存在的文件 ) ios::noreplace 如果文件存在 , 打開操作失敗 (僅打開不存在的文件 ) ios::trunc 如果文件已存在 , 則將其長度截為 0, 并清除原來的內容 2021/11/10 53 文件的讀寫 一個文件被打開以后,就與對應的文件流連接起來。這時對文件的讀操作,就是從流中提取元素,對文件的寫操作就是向流中插入元素。文件的打開模式分為文本模式和二進制模式。 1. 文本模式 以文本模式打開文件,操作其對應的文件流的方式與操作一般輸入輸出流相類似 。 【例 】簡單的寫文本文件程序。 include include 2021/11/10 54 文件的讀寫 void main() { ofstream ofile(c:\\temp\\)。 //以文本方式打開文件 if ( !ofile ) cerr 打開文件錯誤 ! endl。 else { //開始寫入操作 ofile 姓名 \t 年齡 \t 性別 \t endl。 ofile 趙易 \t 21\t 男 endl。 ofile 錢耳 \t 25\t 女 endl。 ofile 孫傘 \t 26\t 男 endl。 ofile 李思 \t 22\t 女 endl。 } } 2021/11/10 55 文件的讀寫 這是一個檔案記錄程序 , 它建立檔案文件 , 并將 姓名 、 年齡 、 性別依次填入 。 文件內容如下: 姓名 年齡 性別 趙易 21 男 錢耳 25 女 孫傘 26 男 李思 22 女 2. 二進制模式 以二進制方式打開的文件,對它的讀寫操作與文本文件有所不同。程序必須按照數(shù)據(jù)在內存或磁盤中的存放格式一個字節(jié)一個字節(jié)的讀取或寫入。這需要使用 read()函數(shù)和 write()函數(shù)。 2021/11/10 56 文件的讀寫 【 例 】 以二進制方式將員工的工資信息寫入文件 include include //定義一個結構 , 存儲員工姓名和工資 struct person{ char name[20]。 double salary。 }。 void main() { person emp1 = {李思 ,1200}。 person emp2 = {王強 ,1000}。 2021/11/10 57 文件的讀寫 ofstream ofile(c:\\temp\\, ios::binary)。 //以二進制方式打開文件 if ( !ofile )//如果打開文件出現(xiàn)錯誤 , 則退出程序 { cerr 打開文件錯誤 ! endl。 return。 } ( (char *)amp。emp1 , sizeof(emp1) )。 //將李思的信息寫入文件 ( (char *)amp。emp2 , sizeof(emp2) )。 //將王強的信息寫入文件 ()。 } 2021/11/10 58 文件的讀寫 由于 write函數(shù)只能寫字符串,所以,對于其它類型的數(shù)據(jù),必須先以 “ (char *)+數(shù)據(jù)地址 ” 的形式將它們轉變?yōu)樽址愋?,通過 sizeof()函數(shù)可以得到數(shù)據(jù)的長度。 2021/11/10 59 文件的隨機讀寫 在一般情況下 , 以讀方式打開文件時 , 文件指針總是指向文件的開頭;以寫方式打開文件時 , 文件指針總是指向文件的結尾 。 當讀文件時 , 每讀一個字節(jié) , 文件指針就向后移動一個字符的位置;寫文件時每寫一個字符后 , 文件指針就移動到文件的尾部 。 這種文件指針的移動方式顯得非常被動 。 為了增加對文件訪問的靈活性 , C++的 istream類和 ostream類中定義了一些在輸入輸出流中操作文件指針的成員函數(shù) , 讓編程者可以方便的操縱文件指針 。 一個文件實際上有兩個指針 , 一個用于讀 , 一個用于寫 , 因此 , 函數(shù)分為對應于 istream類和 ostream類的兩套版本 。 2021/11/10 60 文件的隨機讀寫 這些操縱指針的函數(shù)可以分為以下三類 : ?文件指針相對移動函數(shù) ?文件指針定位函數(shù) ?文件指針絕對移動函數(shù) 下面分別介紹這些函數(shù)。 2021/11/10 61 文件的隨機讀寫 1. 文件指針相對移動函數(shù) 在 istream類和 ostream類中分別定義了不同的相對指針移動函數(shù) seekg()和 seekp()來執(zhí)行 。 它們的定義如下: istreamamp。 istream::seekg( streamoff off, ios::seek_dir dir )。 ostreamamp。 ostream::seekp( streamoff off, ios::seek_dir dir )。 參數(shù) dir是文件指針相對移動的參照位置,如表 列,共有三種情況,在 ios中被定義為一個枚舉類型seek_dir。 2021/11/10 62 文件的隨機讀寫 表 dir標志位含義 名 稱 含 義 Ios::beg 文件頭部 Ios::end 文件尾部 Ios::cur 當前文件指針的位置 參數(shù) off是相對于參照位置的偏移量,為正就是往文件尾部移動,為負就是往文件頭部移動。 off被定義為 streamoff類型,實際上就是 long類型。 ? ( 2, ios::cur ) //文件指針從當前位置向文件尾部移動 2個字節(jié) ? ( 3, ios::end ) //文件指針從文件尾部向文件頭部移動3個字節(jié) ? ( 0, ios::beg ) //文件指針移到文件頭部 2021/11/10 63 文件的隨機讀寫 【 例 】 從文件的相對位置讀取字符 include iostream include fstream using namespace std。 void main() { char strBuffer[]= I am student.。 ofstream ofile(c:\\temp\\)。 //建立一個文本文件 ofilestrBuffer。 //向文件中寫入字符串 ()。 // 關閉文件 char ch。 ifstream ifile(c:\\temp\\)。 //打開文件 , 默認讀取方式 ( 3, ios::end )。 //文件指針從文件尾部向文件頭部移動 3個字節(jié) (ch)。 coutchendl。 2021/11/10 64 文件的隨機讀寫 (2,ios::beg)。 //文件指針從文件頭開始 , 后移 2個字符 (ch)。 coutchendl。 (2,ios::cur)。 //文件指針從當前位置開始 , 后移 2個字符 (ch)。 coutchendl。 } 運行結果為: n a s 2021/11/10 65 文件的隨機讀寫 2. 文件指針定位函數(shù) 對應于 istream類和 ostream類的指針定位函數(shù)分別是tellg()和 tellp()。 其定義如下: streampos istream::tellg()。 streampos ostream::tellp()。 它們返回文件指針的當前位置 , 返回類型為 streampos,等同于 long類型 。 streampos inpos, outpos; inpos= ()。 //返回文件 infile的當前文件指針位置 outpos = ()。 //返回文件 outfile的當前文件指針位置 2021/11/10 66 文件的隨機讀寫 3. 文件指針絕對移動函數(shù) 文件指針的絕對移動函數(shù)可以將指針移動到指定的絕對地址上 。 對應于 istream類和 ostream類的成員函數(shù)是 seekg()和 seekp(), 函數(shù)原型如下: istreamamp。 istream::seekg( streampos pos )。 ostreamamp。 ostream::seekp( streampos pos )。 2021/11/10 67 例題分析與小結 例題 【 例 】 編寫一個程序在磁盤上產(chǎn)生一個檔案文件 。文件名由用戶指定 。 用戶按照 “ 姓名 ” , “ 年齡 ” ,“ 工資 ” 的順序輸入三條記錄 。 然后程序在記錄前加記錄號 ( 數(shù)字和一個空格 ), 將內容寫入文件。 最后顯示 。 首先定義一個存放記錄的結構體 , 結構體包括顯示函數(shù) , 然后定義寫入文件和從文件讀出函數(shù) , 最后編寫主程序 。 2021/11/10 68 例題 include include struct Record{ //定義結構 , 用以存放一條記錄 。 char name[30]。 char age[30]。 char salary[30]。 void Display() {cout 姓名 : name\t 年齡 : age\t 工資 :salaryendl。} }。 void WriteFile(ofstream amp。file,Record amp。data) { file endl。 } void ReadFile(ifstream amp。file,Record amp。data){file 。} void main() 2021/11/10 69 例題 { int i, id。 char *file_name=c:\\temp\\。 Record data。 ofstream xfile( file_name, ios::out )。 //用戶創(chuàng)建文件并寫入數(shù)據(jù) 。 if( !xfile ) //打開文件錯誤 。 { cerr 不能打開文件 ! endl。 return。 } cout 請輸入數(shù)據(jù) 姓名 、 年齡和工資 : endl。 for ( i=0。 i3。 i++ ) //用戶輸入三條記錄 。 { cout姓名 :。 cin 。 cout年齡 :。 cin 。 cout工資 :。 cin 。 WriteFile(xfile,data)。 } 2021/11/10 70 例題 ()。 ifstream infile( file_name, ios::in
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1