国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

了解文件的隨機(jī)讀寫(xiě),文件類(lèi)別、文件緩沖區(qū),文件操作知識(shí)點(diǎn)補(bǔ)充(接上文)

FleyX / 2541人閱讀

摘要:四文件緩沖區(qū)標(biāo)準(zhǔn)采用緩沖文件系統(tǒng)處理的數(shù)據(jù)文件的緩沖文件系統(tǒng)是指系統(tǒng)自動(dòng)地在內(nèi)存中為程序中為每一個(gè)正在使用的文件,開(kāi)辟一塊文件緩沖區(qū)。正因?yàn)橛芯彌_區(qū)的存在,語(yǔ)言在操作文件的時(shí)候,需要做刷新緩沖區(qū)或者在文件操作結(jié)束的時(shí)候關(guān)閉文件

文件的操作

老規(guī)矩筆記自取~:文件操作進(jìn)階筆記
??歡迎喜歡學(xué)習(xí)C/C++的朋友互關(guān)一起努力!!??


一、文件的隨機(jī)讀寫(xiě)

1. fseek 定位文件指針函數(shù)

根據(jù)文件指針的位置和偏移量來(lái)定位文件指針

改變?cè)募羔樦赶虻奈恢?/p>

int fseek( FILE *stream, long offset, int origin );

參數(shù):文件地址,偏移量,起始位置

這里的起始位置分為

SEEK_CUR 當(dāng)前位置

Current position of file pointer

SEEK_END 文件字符的末位(最后一個(gè)字符的下個(gè)位置)

End of file

SEEK_SET 文件起始位置(第一個(gè)字符的起始位)

Beginning of file

偏移量右正左負(fù)

返回值:成功返回,0

用一段代碼感受:

#define _CRT_SECURE_NO_WARNINGS#include #include int main(){	//FILE* fp = fopen("C://Users//yujing wang//Desktop//test.txt", "w");//寫(xiě)入	FILE* fp = fopen("C://Users//yujing wang//Desktop//test.txt", "r");//讀取	if (fp == NULL)	{		perror("fopen");		return -1;	}	//fputs("abcde", fp);//寫(xiě)入abc	fseek(fp, 1, SEEK_SET);//第二個(gè)字符	printf("%c", fgetc(fp));	fseek(fp, 0, SEEK_CUR);//與上面一樣	printf("%c", fgetc(fp));	fseek(fp, -1, SEEK_END);//最后一個(gè)字符	printf("%c", fgetc(fp));	fclose(fp);	fp = NULL;	return 0;}

運(yùn)行結(jié)果和想象的一樣


2. ftell 當(dāng)前偏移量函數(shù)

返回文件指針相對(duì)于起始位置的偏移量

方便我們知道現(xiàn)在文件指針指向哪個(gè)位置

long int ftell ( FILE * stream );

參數(shù):文件地址

返回值:偏移量

還是一段代碼搞起~

#include #include int main(){	FILE* fp = fopen("C://Users//yujing wang//Desktop//test.txt", "r");//讀取	if (fp == NULL)	{		perror("fopen");		return -1;	}	fseek(fp, 1, SEEK_SET);//指向第二個(gè)字符	printf("%ld", ftell(fp));	fclose(fp);	fp = NULL;	return 0;}

結(jié)果符合我們的猜想


3. rewind 返回起始位置函數(shù)

讓文件指針的位置回到文件的起始位置

void rewind ( FILE * stream );

參數(shù):文件地址

返回值:NULL


把剛才的代碼再加一行

int main(){	FILE* fp = fopen("C://Users//yujing wang//Desktop//test.txt", "r");//讀取	if (fp == NULL)	{		perror("fopen");		return -1;	}	fseek(fp, 1, SEEK_SET);//指向第二個(gè)字符	rewind(fp);	printf("%ld", ftell(fp));	fclose(fp);	fp = NULL;	return 0;}

運(yùn)行結(jié)果

偏移量變?yōu)?了


二、文本文件和二進(jìn)制文件

? 二進(jìn)制文件:數(shù)據(jù)在內(nèi)存中以二進(jìn)制的形式存儲(chǔ),如果不加轉(zhuǎn)換的輸出到外存

? 文本文件:以ASCII字符的形式存儲(chǔ)的文件,如果要求在外存上以ASCII碼的形式存儲(chǔ),則需要在存儲(chǔ)前轉(zhuǎn)換


一個(gè)數(shù)據(jù)在內(nèi)存中是怎么存儲(chǔ)的呢?

  • 字符一律以ASCII形式存儲(chǔ)
  • 數(shù)值型數(shù)據(jù)既可以用ASCII形式存儲(chǔ),也可以使用二進(jìn)制形式存儲(chǔ)
  • 如有整數(shù)10000
  • 如果以ASCII碼的形式輸出到磁盤(pán),則磁盤(pán)中占用5個(gè)字節(jié)(每個(gè)字符一個(gè)字節(jié))
  • 二進(jìn)制形式輸出,則在磁盤(pán)上只占4個(gè)字節(jié)(VS2013測(cè)試)


三、feof 讀取結(jié)束原因

在文件讀取過(guò)程中,不能用feof函數(shù)的返回值直接用來(lái)判斷文件的是否結(jié)束

該函數(shù)應(yīng)用于當(dāng)文件讀取結(jié)束的時(shí)候,判斷是讀取失敗結(jié)束,還是遇到文件尾結(jié)束

?feof的用途:是文件讀取結(jié)束了,判斷是不是遇到文件末尾而結(jié)束

?ferror的用途:文件讀取結(jié)束了,判斷是不是遇到錯(cuò)誤后讀取結(jié)束


1. 判斷是否讀取結(jié)束

  1. 文本文件讀取是否結(jié)束,判斷返回值是否為EOF (fgetc)或NULL(fgets)
  • fgetc讀取結(jié)束返回EOF
  • fgets讀取結(jié)束返回NULL
  • 其他函數(shù)請(qǐng)?jiān)?a >c++圖書(shū)館中查找或者在MSDN中搜索
  1. 二進(jìn)制文件的讀取結(jié)束判斷,判斷返回值是否小于實(shí)際要讀的個(gè)數(shù)
  • fread判斷返回值是否小于實(shí)際要讀的個(gè)數(shù)。

四、文件緩沖區(qū)

?ANSIC標(biāo)準(zhǔn)采用“緩沖文件系統(tǒng)”處理的數(shù)據(jù)文件的

?緩沖文件系統(tǒng)是指系統(tǒng)自動(dòng)地在內(nèi)存中為程序中為每一個(gè)正在使用的文件,開(kāi)辟一塊“文件緩沖區(qū)”。從內(nèi)存向磁盤(pán)輸出數(shù)據(jù)會(huì)先送到內(nèi)存中的緩沖區(qū)裝滿緩沖區(qū)后才一起送到磁盤(pán)上。如果從磁盤(pán)向計(jì)算機(jī)讀入數(shù)據(jù),則從磁盤(pán)文件中讀取數(shù)據(jù)輸入到內(nèi)存緩沖區(qū)(充滿緩沖區(qū)),然后再?gòu)木彌_區(qū)逐個(gè)地將數(shù)據(jù)送到程序數(shù)據(jù)區(qū)(程序變量等)。

如圖所示

其實(shí),在之前的學(xué)習(xí)過(guò)程中,就已經(jīng)接觸了內(nèi)存緩存區(qū)

int main(){    int a = 0;    while ((a = getchar()) != EOF)    {        if (("a" <= a && a <= "z") || ("A" <= a && a <= "Z"))        {            printf("YES/n");        }        else        {            printf("NO/n");        }        getchar();//將每次的"/n"除去    }    return 0;}

這里的getchar就是將緩沖區(qū)未輸出的數(shù),取出來(lái)


緩沖區(qū)的大小根據(jù)C編譯系統(tǒng)決定的。

?正因?yàn)橛芯彌_區(qū)的存在,C語(yǔ)言在操作文件的時(shí)候,需要做刷新緩沖區(qū)(fflush)或者在文件操作結(jié)束的時(shí)候關(guān)閉文件(fclose)


文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/122188.html

相關(guān)文章

  • 后端好書(shū)閱讀與推薦(續(xù)三)

    摘要:后端好書(shū)閱讀與推薦系列文章后端好書(shū)閱讀與推薦后端好書(shū)閱讀與推薦續(xù)后端好書(shū)閱讀與推薦續(xù)二后端好書(shū)閱讀與推薦續(xù)三這里依然記錄一下每本書(shū)的亮點(diǎn)與自己讀書(shū)心得和體會(huì),分享并求拍磚。然后又請(qǐng)求封鎖,當(dāng)釋放了上的封鎖之后,系統(tǒng)又批準(zhǔn)了的請(qǐng)求一直等待。 后端好書(shū)閱讀與推薦系列文章:后端好書(shū)閱讀與推薦后端好書(shū)閱讀與推薦(續(xù))后端好書(shū)閱讀與推薦(續(xù)二)后端好書(shū)閱讀與推薦(續(xù)三) 這里依然記錄一下每本書(shū)的...

    lauren_liuling 評(píng)論0 收藏0
  • 后端好書(shū)閱讀與推薦(續(xù)三)

    摘要:后端好書(shū)閱讀與推薦系列文章后端好書(shū)閱讀與推薦后端好書(shū)閱讀與推薦續(xù)后端好書(shū)閱讀與推薦續(xù)二后端好書(shū)閱讀與推薦續(xù)三這里依然記錄一下每本書(shū)的亮點(diǎn)與自己讀書(shū)心得和體會(huì),分享并求拍磚。然后又請(qǐng)求封鎖,當(dāng)釋放了上的封鎖之后,系統(tǒng)又批準(zhǔn)了的請(qǐng)求一直等待。 后端好書(shū)閱讀與推薦系列文章:后端好書(shū)閱讀與推薦后端好書(shū)閱讀與推薦(續(xù))后端好書(shū)閱讀與推薦(續(xù)二)后端好書(shū)閱讀與推薦(續(xù)三) 這里依然記錄一下每本書(shū)的...

    ckllj 評(píng)論0 收藏0
  • 后端好書(shū)閱讀與推薦(續(xù)三)

    摘要:后端好書(shū)閱讀與推薦系列文章后端好書(shū)閱讀與推薦后端好書(shū)閱讀與推薦續(xù)后端好書(shū)閱讀與推薦續(xù)二后端好書(shū)閱讀與推薦續(xù)三這里依然記錄一下每本書(shū)的亮點(diǎn)與自己讀書(shū)心得和體會(huì),分享并求拍磚。然后又請(qǐng)求封鎖,當(dāng)釋放了上的封鎖之后,系統(tǒng)又批準(zhǔn)了的請(qǐng)求一直等待。 后端好書(shū)閱讀與推薦系列文章:后端好書(shū)閱讀與推薦后端好書(shū)閱讀與推薦(續(xù))后端好書(shū)閱讀與推薦(續(xù)二)后端好書(shū)閱讀與推薦(續(xù)三) 這里依然記錄一下每本書(shū)的...

    jcc 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<