摘要:四文件緩沖區(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ù)文件指針的位置和偏移量來(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é)果和想象的一樣
返回文件指針相對(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é)果符合我們的猜想
讓文件指針的位置回到文件的起始位置
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)制文件
:數(shù)據(jù)在內(nèi)存中以二進(jìn)制的形式存儲(chǔ),如果不加轉(zhuǎn)換的輸出到外存?
文本文件
:以ASCII字符的形式存儲(chǔ)的文件,如果要求在外存上以ASCII碼的形式存儲(chǔ),則需要在存儲(chǔ)前轉(zhuǎn)換
一個(gè)數(shù)據(jù)在內(nèi)存中是怎么存儲(chǔ)的呢?
在文件讀取過(guò)程中,
不能
用feof函數(shù)的返回值直接用來(lái)判斷文件的是否結(jié)束
該函數(shù)應(yīng)用于當(dāng)文件讀取結(jié)束的時(shí)候,判斷是讀取失敗結(jié)束,還是遇到文件尾結(jié)束
?feof的用途:是文件讀取結(jié)束了,判斷是不是
遇到文件末尾而結(jié)束
?ferror的用途:文件讀取結(jié)束了,判斷是不是遇到
錯(cuò)誤后讀取結(jié)束
讀取結(jié)束
返回EOF
讀取結(jié)束
返回NULL
?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
摘要:后端好書(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ū)的...
摘要:后端好書(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ū)的...
摘要:后端好書(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ū)的...
閱讀 1049·2021-11-24 09:39
閱讀 3578·2021-11-22 13:54
閱讀 2542·2021-10-11 10:59
閱讀 772·2021-09-02 15:40
閱讀 1024·2019-08-30 15:55
閱讀 1042·2019-08-30 13:57
閱讀 2304·2019-08-30 13:17
閱讀 3024·2019-08-29 18:32