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

資訊專欄INFORMATION COLUMN

了解文件的隨機讀寫,文件類別、文件緩沖區,文件操作知識點補充(接上文)

FleyX / 2551人閱讀

摘要:四文件緩沖區標準采用緩沖文件系統處理的數據文件的緩沖文件系統是指系統自動地在內存中為程序中為每一個正在使用的文件,開辟一塊文件緩沖區。正因為有緩沖區的存在,語言在操作文件的時候,需要做刷新緩沖區或者在文件操作結束的時候關閉文件

文件的操作

老規矩筆記自取~:文件操作進階筆記
??歡迎喜歡學習C/C++的朋友互關一起努力!!??


一、文件的隨機讀寫

1. fseek 定位文件指針函數

根據文件指針的位置和偏移量來定位文件指針

改變原文件指針指向的位置

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

參數:文件地址,偏移量,起始位置

這里的起始位置分為

SEEK_CUR 當前位置

Current position of file pointer

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

End of file

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

Beginning of file

偏移量右正左負

返回值:成功返回,0

用一段代碼感受:

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

運行結果和想象的一樣


2. ftell 當前偏移量函數

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

方便我們知道現在文件指針指向哪個位置

long int ftell ( FILE * stream );

參數:文件地址

返回值:偏移量

還是一段代碼搞起~

#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);//指向第二個字符	printf("%ld", ftell(fp));	fclose(fp);	fp = NULL;	return 0;}

結果符合我們的猜想


3. rewind 返回起始位置函數

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

void rewind ( FILE * stream );

參數:文件地址

返回值: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);//指向第二個字符	rewind(fp);	printf("%ld", ftell(fp));	fclose(fp);	fp = NULL;	return 0;}

運行結果

偏移量變為0了


二、文本文件和二進制文件

? 二進制文件:數據在內存中以二進制的形式存儲,如果不加轉換的輸出到外存

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


一個數據在內存中是怎么存儲的呢?

  • 字符一律以ASCII形式存儲
  • 數值型數據既可以用ASCII形式存儲,也可以使用二進制形式存儲
  • 如有整數10000
  • 如果以ASCII碼的形式輸出到磁盤,則磁盤中占用5個字節(每個字符一個字節)
  • 二進制形式輸出,則在磁盤上只占4個字節(VS2013測試)


三、feof 讀取結束原因

在文件讀取過程中,不能用feof函數的返回值直接用來判斷文件的是否結束

該函數應用于當文件讀取結束的時候,判斷是讀取失敗結束,還是遇到文件尾結束

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

?ferror的用途:文件讀取結束了,判斷是不是遇到錯誤后讀取結束


1. 判斷是否讀取結束

  1. 文本文件讀取是否結束,判斷返回值是否為EOF (fgetc)或NULL(fgets)
  • fgetc讀取結束返回EOF
  • fgets讀取結束返回NULL
  • 其他函數請在c++圖書館中查找或者在MSDN中搜索
  1. 二進制文件的讀取結束判斷,判斷返回值是否小于實際要讀的個數
  • fread判斷返回值是否小于實際要讀的個數。

四、文件緩沖區

?ANSIC標準采用“緩沖文件系統”處理的數據文件的

?緩沖文件系統是指系統自動地在內存中為程序中為每一個正在使用的文件,開辟一塊“文件緩沖區”。從內存向磁盤輸出數據會先送到內存中的緩沖區裝滿緩沖區后才一起送到磁盤上。如果從磁盤向計算機讀入數據,則從磁盤文件中讀取數據輸入到內存緩沖區(充滿緩沖區),然后再從緩沖區逐個地將數據送到程序數據區(程序變量等)。

如圖所示

其實,在之前的學習過程中,就已經接觸了內存緩存區

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就是將緩沖區未輸出的數,取出來


緩沖區的大小根據C編譯系統決定的。

?正因為有緩沖區的存在,C語言在操作文件的時候,需要做刷新緩沖區(fflush)或者在文件操作結束的時候關閉文件(fclose)


文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/122188.html

相關文章

  • 后端好書閱讀與推薦(續三)

    摘要:后端好書閱讀與推薦系列文章后端好書閱讀與推薦后端好書閱讀與推薦續后端好書閱讀與推薦續二后端好書閱讀與推薦續三這里依然記錄一下每本書的亮點與自己讀書心得和體會,分享并求拍磚。然后又請求封鎖,當釋放了上的封鎖之后,系統又批準了的請求一直等待。 后端好書閱讀與推薦系列文章:后端好書閱讀與推薦后端好書閱讀與推薦(續)后端好書閱讀與推薦(續二)后端好書閱讀與推薦(續三) 這里依然記錄一下每本書的...

    lauren_liuling 評論0 收藏0
  • 后端好書閱讀與推薦(續三)

    摘要:后端好書閱讀與推薦系列文章后端好書閱讀與推薦后端好書閱讀與推薦續后端好書閱讀與推薦續二后端好書閱讀與推薦續三這里依然記錄一下每本書的亮點與自己讀書心得和體會,分享并求拍磚。然后又請求封鎖,當釋放了上的封鎖之后,系統又批準了的請求一直等待。 后端好書閱讀與推薦系列文章:后端好書閱讀與推薦后端好書閱讀與推薦(續)后端好書閱讀與推薦(續二)后端好書閱讀與推薦(續三) 這里依然記錄一下每本書的...

    ckllj 評論0 收藏0
  • 后端好書閱讀與推薦(續三)

    摘要:后端好書閱讀與推薦系列文章后端好書閱讀與推薦后端好書閱讀與推薦續后端好書閱讀與推薦續二后端好書閱讀與推薦續三這里依然記錄一下每本書的亮點與自己讀書心得和體會,分享并求拍磚。然后又請求封鎖,當釋放了上的封鎖之后,系統又批準了的請求一直等待。 后端好書閱讀與推薦系列文章:后端好書閱讀與推薦后端好書閱讀與推薦(續)后端好書閱讀與推薦(續二)后端好書閱讀與推薦(續三) 這里依然記錄一下每本書的...

    jcc 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<