中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言文件的操作流程是什么

發布時間:2022-04-01 15:57:12 來源:億速云 閱讀:211 作者:iii 欄目:開發技術

這篇文章主要介紹“C語言文件的操作流程是什么”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“C語言文件的操作流程是什么”文章能幫助大家解決問題。

    為什么使用文件

    前面寫的通訊錄,增加人數退出程序后,數據就會消失。此時數據是存放在內存中,下次運行通訊錄程序的時候,數據又得重新錄入,如果使用這樣的通訊錄就很難受。

    所以文件操作就應運而生。數據持久化的方法有兩種:1.把數據存放在磁盤文件2.存放到數據庫使用文件我們們可以將數據直接存放在電腦的硬盤上,做到了數據的持久化。

    什么是文件

    但是在程序設計中,我們一般談的文件有兩種:程序文件、數據文件(從文件功能的角度來分類的)。

    程序文件:包括源程序文件(后綴為.c),目標文件(windows環境后綴為.obj),可執行程序(windows環境后綴為.exe)。

    數據文件:文件的內容不一定是程序,而是程序運行時讀寫的數據,比如程序運行需要從中讀取數據的文件,或者輸出內容的文件。

    在以前各章所處理數據的輸入輸出都是以終端為對象的,即從終端的鍵盤輸入數據,運行結果顯示到顯示器上。

    其實有時候我們會把信息輸出到磁盤上,當需要的時候再從磁盤上把數據讀取到內存中使用,這里處理的就是磁盤上文件。

    文件名

    一個文件要有一個唯一的文件標識,以便用戶識別和引用。

    文件名包含3部分:文件路徑+文件名主干+文件后綴

    例如: c:\code\test.txt

    為了方便起見,文件標識常被稱為文件名。

    關于文件的一些概念

    文件指針:緩沖文件系統中,關鍵的概念是“文件類型指針”,簡稱“文件指針”。

    文件信息區:每個被使用的文件都在內存中開辟了一個相應的文件信息區,用來存放文件的相關信息(如文件的名字,文件狀態及文件當前的位置等)。這些信息是保存在一個結構體變量中的。該結構體類型是有系統聲明的,取名FILE.

    VS2013編譯環境提供的 stdio.h 頭文件中有以下的文件類型申明;

    struct _iobuf {
            char *_ptr;
            int   _cnt;
            char *_base;
            int   _flag;
            int   _file;
            int   _charbuf;
            int   _bufsiz;
            char *_tmpfname;
           };
    typedef struct _iobuf FILE;

    每當打開一個文件的時候,系統會根據文件的情況自動創建一個FILE結構的變量,并填充其中的信息,使用者不必關心細節。

    FILE指針:一般都是通過一個FILE的指針來維護這個FILE結構的變量,這樣使用起來更加方便。

    下面我們可以創建一個FILE*的指針變量:

    FILE* pf;//文件指針變量

    定義pf是一個指向FILE類型數據的指針變量。可以使pf指向某個文件的文件信息區(是一個結構體變量)。通過該文件信息區中的信息就能夠訪問該文件。也就是說,通過文件指針變量能夠找到與它關聯的文件

    C語言文件的操作流程是什么

    規定:文件在讀寫之前應該先打開文件,在使用結束之后應該關閉文件。

    在編寫程序的時候,在打開文件的同時,都會返回一個FILE*的指針變量指向該文件,也相當于建立了指針和文件的關系。

    ANSIC 規定使用fopen函數來打開文件,fclose來關閉文件

    首先理解 讀和寫 是什么意思。

    寫文件:將內存的數據 輸出 到文件或屏幕上。

    讀文件:將文件或鍵盤的數據 輸入 到內存中。

    C語言文件的操作流程是什么

    文件函數

    fopen

    函數原型:

    FILE *fopen( const char *filename, const char *mode );

    函數功能:Open a file.

    該函數的功能就是打開一個文件,函數的第一個參數是你要打開的文件的文件名,第二個參數是打開這個文件的形式。

    返回值:Each of these functions returns a pointer to the open file. A null pointer value indicates an error.

    返回一個指向文件的指針,如果打開錯誤返回空指針。

    注意:需要檢查fopen返回值的有效性

    	FILE* pf = fopen("data.txt", "r");
    	if (pf == NULL)
    	{
    		printf("%s\n", strerror(errno));
    		return;//失敗返回
    	}

    fclose

    函數原型:

    int fclose( FILE *stream );

    函數功能

    Closes a stream (fclose) .

    關閉一個流

    返回值:fclose returns 0 if the stream is successfully closed.return EOF to indicate an errorreturn 0

    如果流成功關閉,返回EOF(-1)如果失敗。

    實例代碼

    	FILE* pf = fopen("data.txt", "r");
    	if (pf == NULL)
    	{
    		printf("%s\n", strerror(errno));
    		return 1;//失敗返回
    	}

    絕對路徑

    絕對路徑就是在具體文件的位置。例如:

    D:\c-language\c yuyan\c yuyan\data.txt

    FILE* pf = fopen("D:\\c-language\\c yuyan\\c yuyan\data.txt", "r");

    但是為了防止字符串中的’\‘及其后面的字符被整體視為為轉義字符,所以需要在每個’\‘后面再加一個’\’。

    文件的打開方式

    前三個是常用的方式。

    規則:

    文件打開方式含義
    “r” (只讀)打開文件進行輸入操作。如不存在將會報錯。
    “w” (只寫)為了輸出數據,打開一個文本文件。如存在,則清空里面的數據并輸出。如不存在將建立一個新的文件。
    “a” (追加)向文本文件尾添加數據。如果文件不存在,則創建該文件。
    “rb”(只讀)為了輸入數據,打開一個二進制文件。如不存在,則出錯。
    “wb”(只寫)為了輸出數據,打開一個二進制文件。如不存在,則建一個新文件。
    “ab”(追加)向一個二進制文件尾添加數據。如不存在,則出錯。
    “r+”(讀寫)打開一個文件進行更新(輸入和輸出)。如不存在則出錯。
    “w+”(讀寫)建一個空文件并打開它以進行更新(輸入和輸出)。如果同名文件已經存在,則將丟棄其內容,并且該文件將被視為新的空文件。
    “a+”(讀寫)打開一個文件,在文件尾進行讀寫。如不存在建立一個新文件。

    文件操作流程

    以下是對文件操作的一般流程。

    #include <stdio.h>
    #include <string.h>
    #include <errno.h>
    int main()
    {
    	//打開文件
    	FILE* pf = fopen("data.txt", "r");
    	if (pf == NULL)
    	{
    		printf("%s\n", strerror(errno));
    		return 0;
    	}
    	//對文件進行一系列操作
    	......
    	.....
    	//關閉文件
    	fclose(pf);
    	pf = NULL;置空
    	return 0;
    }

    關于“C語言文件的操作流程是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    苍溪县| 文安县| 沙坪坝区| 莱芜市| 丹棱县| 贵港市| 河北区| 会理县| 喜德县| 靖宇县| 云和县| 涿州市| 潮州市| 静宁县| 盐亭县| 青冈县| 哈密市| 渑池县| 凤翔县| 商都县| 武穴市| 巴中市| 静海县| 城步| 夏津县| 呼图壁县| 武安市| 闵行区| 东海县| 新巴尔虎左旗| 通化县| 高清| 旅游| 安康市| 江津市| 丽江市| 修武县| 射阳县| 察隅县| 孟津县| 霞浦县|