精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

C++中隨機(jī)存取文件的處理

開發(fā) 后端
在本文中,我們所講的是怎樣使用C++中的隨機(jī)存取文件。除了最簡單的應(yīng)用程序以外,大多數(shù)程序都需要讀寫文件?;蛟S只是為了讀取一個配置文件,一個文本解析器或更為復(fù)雜的什么東西。

和許多的C++程序一樣,有些人更喜歡用原先的C語言方式處理問題,如果你恰好也是這些人中的一員,就應(yīng)該學(xué)習(xí)一下這篇文章。

基本的文件操作有

◆fopen——打開文件,指定文件以怎樣的方式打開(讀/寫)以及類型(二進(jìn)制/文本)

◆fclose——關(guān)閉已經(jīng)打開的文件

◆fread——讀取文件

◆fwrite——寫文件

◆fseek/fsetpos——將文件指示器轉(zhuǎn)移到文件中的某一地方

◆ftell/fgetpos——可以告訴你文件指示器所在的位置

文件有兩種基本類型:文本和二進(jìn)制。在這兩者之中,通常二進(jìn)制類型是較容易解決的。由于在文本中處理隨機(jī)存取并不常用,我們會在本文中重點(diǎn)關(guān)注二進(jìn)制文件的處理。上面列出的操作中的前四項(xiàng)可用于文本文件和隨機(jī)存取文件。后面的兩項(xiàng)則僅用于隨機(jī)存取。

隨機(jī)存取意味著我們可以在文件的任意部分之間進(jìn)行切換,且可以從中讀寫數(shù)據(jù)而不需要通讀整篇文件。

二進(jìn)制文件

二進(jìn)制文件是任意長度的文件,它保存有從0到0xff(0到255)不等的字節(jié)值。這些字節(jié)在二進(jìn)制文件中沒有任何意義,與此不同的是,在文本文件中,值為13就意味著回車,10意味著換行,26意味著文件結(jié)束,而讀取文本文件的軟件要能夠解決這些問題。

在現(xiàn)在的術(shù)語中,我們將二進(jìn)制文件稱為包含了字節(jié)的字符流,大多數(shù)語言傾向于將其理解為字符流而不是文件。重要的部分是數(shù)據(jù)流本身而不是其來源。在C語言中,你能從文件或數(shù)據(jù)流方面來考慮數(shù)據(jù)?;蛘?,你可以將其理解為一組長的數(shù)組。通過隨機(jī)存取,你可以讀寫數(shù)組的任意部分。

      例一:
// ex1.c : Defines the entry point for the console application.

//

#include < stdio.h>

#include < string.h>

#include < windows.h>

int FileSuccess(FILE * handle,const char * reason, const char * path) {

OutputDebugString( reason );

OutputDebugString( path );

OutputDebugString(" Result : ");

if (handle==0)

{

OutputDebugString("Failed");

return 0;

}

else

{

OutputDebugString("Suceeded");

return 1;

}

}

int main(int argc, char * argv[])

{

const char * filename="test.txt";

const char * mytext="Once upon a time there were three bears.";

int byteswritten=0;

FILE * ft= fopen(filename, "wb");

if (FileSuccess(ft,"Opening File: ", filename)) {

fwrite(mytext,sizeof(char),strlen(mytext), ft);

fclose( ft );

}

printf("len of mytext = %i ",strlen(mytext));

return 0;

}
 

這段代碼顯示了一個簡單的打開待寫的二進(jìn)制文件,文本字符(char*)會寫入該文件。通常你會使用文本文件但是筆者想證明你可以向二進(jìn)制文件寫入文本。

     // ex1.c

     #include < stdio.h>

     #include < string.h>

     int main(int argc, char * argv[])

    {

     const char * filename="test.txt";

     const char * mytext="Once upon a time there were three bears.";

     int byteswritten=0;

     FILE * ft= fopen(filename, "wb") ;

     if (ft) {

     fwrite(mytext,sizeof(char),strlen(mytext), ft) ;

     fclose( ft ) ;

     }

      printf("len of mytext = %i ",strlen(mytext)) ;

     return 0;

     }
 

例一的作用

這個例子打開了一個待寫的二進(jìn)制文件。FILE*變量從fopen()調(diào)用中返回。如果這一操作失敗那么它會返回為0。

Fopen()命令試圖打開指定的文件,在這個案例中則是位于相同文件夾的test.txt。記住,如果文件包含一個路徑那么所有的退格必須重疊?!癱:\folder\test.txt”是錯誤的,你必須使用“c:\\folder\\test.txt”。

由于文件樣式是wb,我們正準(zhǔn)備寫入二進(jìn)制文件。如果文件不存在則系統(tǒng)會創(chuàng)建一個文件,如果存在,則里面的內(nèi)容都會被刪除。如果調(diào)用fopen失敗了,或許由于文件被打開了,或者其名稱包括無效字符又或者一個無效路徑那么fopen會返回0值。

雖然你可以只檢查ft是否為0(值為0則成功),但是筆者還是添加了一個FileSuccess()函數(shù)來確保這一操作。在窗口中,它會顯示調(diào)用是否成功以及文件名稱。如果你失敗了則可能需要修復(fù)。注意在Windows中一般沒有多少輸出文本可供系統(tǒng)調(diào)試器使用,

 fwrite(mytext,sizeof(char),strlen(mytext), ft) ; fwrite()調(diào)用輸出了指定文本。第二,三個參數(shù)分別是字符的大小和字符串的長度。它們兩個都是被size_t定義了。注意有了二進(jìn)制文件后,即便你正在向文件中寫入(char*)字符串,它也沒有任何附加換行字符。如果你想要這些字符,你必須明確將這些字符包含到字符串中。

讀寫文件

打開一個文件的時候,必須指定打開的方式。這意味著如果你打算要為文件附加?xùn)|西,那么是否要創(chuàng)建新文件并對其進(jìn)行覆蓋?它是文本文件還是二進(jìn)制文件呢?是要讀取文件還是要寫文件呢?這樣要通過使用一個或更多的文件模式分類符來完成,文件模式分類符是一些單獨(dú)的字母“r”,“b”,“w”,“a”和+?!皉”意思是打開文件以便讀取。如果文件不存在或找不到文件這一操作會失敗。“w”意思是待寫方式或空文件方式打開文件。如果文件存在,則文件內(nèi)容會被損壞?!癮”表示打開文件,并準(zhǔn)備從文件末端寫入而不需要在寫入新數(shù)據(jù)前刪除EOF標(biāo)記;如果不存在該文件則首先會創(chuàng)建一個文件。向文件模型添加+會創(chuàng)建下列三種新模型:

“r+”打開文件等待讀取或?qū)懭??!皐+”以空文件方式打開文件等待讀取或?qū)懭?。如果文件存在,則文件內(nèi)容會被損毀。

“a+”打開文件等待讀取或添加,添加的操作包括新數(shù)據(jù)寫入前EOF標(biāo)記的移除,以及寫入完成后EOF標(biāo)記的保存,如果文件不存在則先要創(chuàng)建文件。

下面的列表顯示了字碼組合包括文本的和二進(jìn)制文件的。通常你可以選擇從文本文件中讀取或?qū)懭胛募遣灰獌烧咄瑫r使用。

就二進(jìn)制文件而言,你可以選擇對相同文件進(jìn)行讀取和寫入的操作。列表告訴了我們可以用字碼進(jìn)行哪些操作。

       Mode Type of file Read Write Create Truncate 
r text Read

rb+ binary Read

r+ text Read Write

r+b binary Read Write

rb+ binary Read Write

w text Write Create Truncate

wb binary Write Create Truncate

w+ text Read Write Create Truncate

w+b binary Read Write Create Truncate

wb+ binary Read Write Create Truncate

a text Write Create

ab binary Write Create

a+ text Read Write Create

a+b binary Write Create

ab+ binary Write Create
 

就筆者的經(jīng)驗(yàn)來看,除非你剛剛創(chuàng)建完文件或讀取完文件,否則你通過使用“w+b”只能僥幸成功。

還有一些情況允許其他字母存在。例如微軟運(yùn)行“t”代表文本模式,“c”用于認(rèn)可,“n”用于非認(rèn)可,“S”為順序存取優(yōu)化緩沖,“R”代表隨機(jī)存取,“T”代表臨時性而“D”用于 刪除/臨時性保存。

使用二進(jìn)制文件的主要原因是可以獲得靈活性;你可以讀取或?qū)懭胛募娜我獠糠?。文本文件只能讓你按照順序讀取或?qū)懭搿,F(xiàn)在隨著SQLite或MySQL數(shù)據(jù)庫的普及,在二進(jìn)制文件中使用隨機(jī)存取的需要減少了。從某種意義上說,隨機(jī)存取文件記錄有點(diǎn)老土了,但是仍然還是有用的。

筆者在數(shù)據(jù)庫普及之前就使用過基于隨機(jī)存取文件的多種數(shù)據(jù)處理方案。例如,在小文件中,筆者使用的是 索引/數(shù)據(jù) 文件模式。該模式包括兩個文件。一個是數(shù)據(jù)文件,它保存了一些長短不一的記錄。另一種文件是索引文件,這樣的文件擁有同樣的記錄作為數(shù)據(jù)文件。但是在索引文件中每個記錄的長度相同而且都由兩個適合結(jié)構(gòu)的部分組成。

struct {??fpos_t pos;??int size; } indexrec; 

類型fpos_t是由fsetpos()和fgetpos()定義和使用的執(zhí)行。這些是fseek和ftell更新的版本且更有助于創(chuàng)建書簽。如果你正在計(jì)算文件聞之且需要設(shè)定文件那么你應(yīng)該使用fseek(),另外ftell()也可以給你int的當(dāng)前位置。

在實(shí)際操作中,fpos_t可能只是一個int但是你應(yīng)該使用fpos_t類型。它保存了當(dāng)前文件指示器的副本。這是隨機(jī)存取文件的屬性,它表明了下一次讀取或?qū)懭氲奈恢?。它的粒度為一,因此你可以將其放在文件的任意位置?/P>

【編輯推薦】

  1. C++、Java與C#的命名規(guī)范總結(jié)
  2. 在C++中使用Lambda函數(shù)提高代碼性能
  3. 給C++初學(xué)者的50條建議
責(zé)任編輯:彭凡 來源: IT專家網(wǎng)
相關(guān)推薦

2009-12-16 10:41:37

Ruby隨機(jī)存取文件

2010-05-05 10:20:43

Java

2010-01-27 16:05:06

C++堆棧

2010-01-21 09:34:57

C++語法

2023-12-04 09:37:00

C++靜態(tài)變量

2010-01-21 14:07:14

CC++聲明

2018-01-29 08:44:14

2010-01-28 16:31:54

C++類型

2010-01-25 10:25:19

C++變量

2010-01-27 17:16:52

C++構(gòu)造函數(shù)

2010-01-21 13:33:44

C++基類

2020-08-21 13:20:36

C++If ElseLinux

2010-01-20 10:19:55

C++數(shù)組

2019-01-04 10:41:07

系統(tǒng)內(nèi)存SRAM

2010-01-26 10:42:26

C++函數(shù)

2024-01-25 11:32:21

2011-04-11 11:09:50

this指針

2015-12-28 11:25:51

C++異常處理機(jī)制

2024-05-31 12:50:49

C++編程NaN

2010-01-26 14:35:11

C++關(guān)鍵字
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

亚洲人成啪啪网站| 亚洲伦理在线精品| 日本欧美在线视频| 欧美黄色高清视频| 国产精品亚洲欧美日韩一区在线| 夜夜爽夜夜爽精品视频| 精品国产乱码久久久久久郑州公司| 欧美精品韩国精品| 国产精品99一区二区三| 亚洲成人国产精品| 天天插天天操天天射| 羞羞的视频在线看| 久久久久久夜精品精品免费| 成人免费自拍视频| 中文字幕在线观看视频网站| 欧美aaaaaaaaaaaa| 亚洲国产欧美久久| 日本中文字幕影院| 午夜伦理福利在线| 1区2区3区欧美| 免费av一区二区三区| 91亚洲视频在线观看| 国产亚洲在线观看| 欧美成人免费播放| 一区二区伦理片| 北条麻妃一区二区三区在线观看| 欧美性极品少妇| 人妻久久久一区二区三区| 欧美三级理伦电影| 91免费版在线| 成人看片视频| 国产精品无码免费播放| 老司机精品久久| 亚州国产精品久久久| 色欲人妻综合网| 日韩在线第七页| 亚洲丝袜av一区| 久久久老熟女一区二区三区91| 国语精品视频| 欧美日韩和欧美的一区二区| 日韩视频在线免费看| 嗯啊主人调教在线播放视频| 亚洲卡通欧美制服中文| 亚洲免费久久| 亚洲欧洲精品视频| 成人美女视频在线观看18| 成人免费自拍视频| 91国内精品久久久| 蜜臂av日日欢夜夜爽一区| 欧美一区二区三区……| 好吊操这里只有精品| 亚洲手机在线| 欧美激情免费在线| 青娱乐国产在线| 国产精品黄色| 久久久久久国产精品久久| 99久久婷婷国产综合| 亚洲91视频| 久久天天躁狠狠躁夜夜av| 三级黄色免费观看| 国产精品99视频| 欧美成人在线免费视频| 青青操国产视频| 在线成人直播| 欧美激情一区二区三区在线视频观看| 欧美三级日本三级| 伊人色**天天综合婷婷| 欧美日韩成人网| 国产一级理论片| 99re国产精品| 日韩av电影国产| 亚洲 小说区 图片区| 毛片av一区二区三区| 成人黄色免费看| 亚洲欧美黄色片| av激情综合网| 欧美一区激情视频在线观看| a√资源在线| 亚洲图片你懂的| 日本大胆人体视频| 在线观看特色大片免费视频| 欧洲精品中文字幕| 青娱乐国产精品视频| 91亚洲无吗| 日韩麻豆第一页| 一级特黄曰皮片视频| 欧美久久成人| 欧美亚洲一级片| 中文字幕在线观看免费| 国产成人亚洲综合a∨猫咪| 精品久久久三级| 成a人v在线播放| 一区二区三区精品视频在线| 国产精品沙发午睡系列| 久久99国产精品二区高清软件| 91精品国产综合久久精品app| 久久性爱视频网站| 精品日产免费二区日产免费二区| 欧美成人激情视频免费观看| 亚洲高清毛片一区二区| 久久精品国产一区二区三| 国产精品国产精品国产专区不卡| 国产视频第一页在线观看| 亚洲视频小说图片| 日韩精品一区二区三区久久| 精品中文在线| 一区二区欧美日韩视频| 久久国产精品波多野结衣av| 久久婷婷亚洲| 成人av资源网| 男女啪啪在线观看| 欧美午夜片欧美片在线观看| 欧美色图校园春色| 精品国产91| 欧美日韩成人黄色| 一级片aaaa| 久久久久成人黄色影片| 久久99国产精品一区| 日韩一区二区三区在线免费观看| 日韩欧美www| 中文字幕第69页| 久久国产欧美| 国产伦精品一区二区三区在线 | 91麻豆精品成人一区二区| 日韩一级在线| wwwxx欧美| 成人免费视屏| 欧美人牲a欧美精品| 丰满圆润老女人hd| 亚洲国产91| 91久久精品国产91久久性色tv| www.成人.com| 91久久精品一区二区| 亚洲天堂资源在线| 国产一区久久| 97人人澡人人爽| 好了av在线| 欧美放荡的少妇| 国产探花视频在线播放| 久久午夜精品| 日本一区高清不卡| 日韩电影大全网站| 精品在线小视频| 国产区一区二区三| 99精品久久久久久| 1024av视频| 日韩一级电影| 欧洲精品久久久| 毛片免费在线观看| 91精品办公室少妇高潮对白| 免费一级做a爰片久久毛片潮| 久久久国产亚洲精品| 九色91视频| 久久爱91午夜羞羞| 亚洲一二在线观看| 不卡av电影在线| 国产欧美日韩综合精品一区二区| 亚洲精品高清无码视频| 精品国产一区二区三区香蕉沈先生 | 久久精品视频18| 肉色丝袜一区二区| 婷婷四月色综合| 国产一区二区| 欧美极品少妇与黑人| 日本xxxxwww| 色综合婷婷久久| 四虎国产成人精品免费一女五男| 麻豆精品在线播放| 超碰在线免费观看97| 日韩一区二区三区色| 高清欧美电影在线| 天天干天天爱天天操| 91成人免费网站| 欧美激情精品久久久久久免费| 国产在线视视频有精品| www.国产在线视频| 婷婷综合一区| 国产一区红桃视频| 四虎影视国产在线视频| 亚洲精品电影在线观看| 久久午夜鲁丝片| 亚洲激情成人在线| 一女三黑人理论片在线| 日本成人在线一区| 视色,视色影院,视色影库,视色网| 97久久超碰| 国产精品白嫩美女在线观看| 18视频在线观看| 亚洲美女av黄| 国产又粗又猛又黄又爽| 婷婷中文字幕综合| 日本视频在线免费| av中文字幕在线不卡| 中文字幕永久视频| 欧美午夜久久| 亚洲精品一区二区毛豆| 国产精品对白久久久久粗| 国产精品99免视看9| 日韩欧美一起| 中文字幕在线看视频国产欧美在线看完整| 精品国产99久久久久久宅男i| 色综合久久久久网| 黄色一级视频在线观看| 欧美激情一区三区| av网页在线观看| 狠狠色综合日日| 可以免费在线看黄的网站| 欧美二区视频| 亚洲精品日韩在线观看| 小嫩嫩12欧美| 91嫩草国产在线观看| 成人国产一区| 国产成人一区二| 激情国产在线| 欧美黄色片视频| 欧美性videos| 国产一区二区三区日韩欧美| 无码国产精品高潮久久99| 91精品国产色综合久久| 姑娘第5集在线观看免费好剧| 午夜电影一区二区三区| 91日韩中文字幕| 亚洲国产成人自拍| 亚洲永久精品ww.7491进入| 国产成人在线网站| 在线黄色免费看| 青草国产精品久久久久久| 黄色a级片免费| 亚洲影视在线| 国产原创中文在线观看| 午夜精品国产| 强开小嫩苞一区二区三区网站| 欧美午夜精彩| 日韩欧美亚洲精品| 蜜桃一区二区三区| 国产一区精品视频| 成人香蕉社区| 国产精品一国产精品最新章节| 欧美激情三级| 51精品国产人成在线观看| 亚洲a成人v| 成人春色激情网| 91九色成人| 成人午夜在线影院| 国产精品久久久久久av公交车| 91精品久久久久久久久中文字幕 | 69av在线| 色哟哟网站入口亚洲精品| 888av在线| 伊人久久大香线蕉av一区二区| 国产裸舞福利在线视频合集| 亚洲一级片在线看| 成年人视频网站在线| 中文字幕日本精品| 老司机福利在线视频| 日韩日本欧美亚洲| 中中文字幕av在线| 久久久久国色av免费观看性色 | 国产二区精品| 艳母动漫在线观看| 欧美日韩国产色综合一二三四| www婷婷av久久久影片| 亚洲视频日本| 亚洲午夜无码av毛片久久| 可以看av的网站久久看| 亚洲黄色小视频在线观看| 狠狠色伊人亚洲综合成人| 在线观看视频你懂得| 成人av在线观| 99久久久无码国产精品性| 中文字幕av一区二区三区高| 顶级黑人搡bbw搡bbbb搡| 亚洲最新视频在线观看| 国产成人自拍视频在线| 色偷偷久久一区二区三区| 中文字幕乱码中文字幕| 日韩欧美国产麻豆| 亚洲 精品 综合 精品 自拍| 色婷婷久久av| 国产网红女主播精品视频| 日本高清久久天堂| 亚洲成人1区| 国内成+人亚洲| 成人情趣视频| 国产精品久久久久7777| 久久综合网络一区二区| 亚洲色图欧美自拍| 99精品热视频| 亚洲 欧美 变态 另类 综合| 五月综合激情日本mⅴ| 亚洲第一区av| 欧美精品一区二区三区蜜桃视频| 久久综合九色综合久| 超碰97人人做人人爱少妇| 亚洲国产成人二区| 成人一区二区电影| 外国成人在线视频| mm131午夜| 久久综合五月| 人妖粗暴刺激videos呻吟| 国产精品情趣视频| 色网站在线播放| 91精品国产色综合久久不卡蜜臀 | 色哟哟网站入口亚洲精品| 国产乱码在线| 国产日韩专区在线| 日韩啪啪网站| 成人av在线不卡| 裸体一区二区三区| 中国美女乱淫免费看视频| 亚洲精品免费电影| 国产一区二区视频免费| 欧美精品一区二区三区蜜臀| 97超碰资源站在线观看| 国产精品极品美女粉嫩高清在线| a看欧美黄色女同性恋| 尤物一区二区三区| 日韩激情在线观看| 中文字幕乱码一区| 一区二区三区在线视频播放| 一本到在线视频| 国产一区二区黑人欧美xxxx| 川上优av中文字幕一区二区| 91精品黄色| 91亚洲国产| 91高清国产视频| 欧美激情一区二区三区四区| 91精品国产综合久久久蜜臀九色| 欧美精品一区二区三区四区| 日韩特级毛片| 99在线高清视频在线播放| 日韩在线视屏| 特级丰满少妇一级| 亚洲国产精品ⅴa在线观看| 中文字幕在线欧美| 亚洲免费小视频| 亚洲精品日产| 久中文字幕一区| 国产欧美高清| 成人免费毛片日本片视频| 午夜精品久久久久久不卡8050| 欧洲精品久久一区二区| 久久久久久久色| 91蝌蚪精品视频| 欧美午夜性视频| av一区二区三区四区| 日韩三级av在线| 精品无人区太爽高潮在线播放 | 精品久久久久久久中文字幕| 神马午夜电影一区二区三区在线观看| 欧美国产视频一区二区| av日韩精品| 鲁一鲁一鲁一鲁一色| 99久久综合精品| 国产精品免费精品一区| 亚洲午夜精品久久久久久性色| 成人看片网页| 中文字幕中文字幕在线中一区高清 | 国产高潮流白浆喷水视频| 草民午夜欧美限制a级福利片| 亚洲2区在线| www.射射射| 久久久久一区二区三区四区| 国产精品sm调教免费专区| 精品国产网站地址| 中文在线综合| 91视频 -- 69xx| 国产色综合一区| 国产精品九九九九| 欧美极品xxxx| 欧美男gay| 久久久久久综合网| 亚洲成人免费观看| 欧美成人免费| 国产日韩欧美在线| 韩国精品一区二区三区| 日韩av一二区| 欧美日韩成人在线一区| 色婷婷av在线| 热re99久久精品国产99热| 久草热8精品视频在线观看| 精品视频在线观看免费| 亚洲美女在线视频| 羞羞视频在线观看一区二区| 国产精品裸体瑜伽视频| 国产日产欧美一区二区视频| 国产福利第一页| 秋霞成人午夜鲁丝一区二区三区| 久久精品亚洲欧美日韩精品中文字幕| 性活交片大全免费看| 欧美在线一区二区三区| 金瓶狂野欧美性猛交xxxx| 欧美在线播放一区| 国产一区二区不卡在线| 一级片视频在线观看| 欧美超级免费视 在线| 视频一区欧美| 黄色国产在线视频| 精品视频一区二区不卡| 人成在线免费网站|