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

溫馨提示×

溫馨提示×

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

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

C語言中常見的文件操作方法是什么

發布時間:2022-06-29 14:08:18 來源:億速云 閱讀:116 作者:iii 欄目:開發技術

今天小編給大家分享一下C語言中常見的文件操作方法是什么的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

    1.為什么使用文件

    大家在寫程序的時候有沒有一個困惑,就是我寫的程序,輸入一些數據后,當我把程序關掉以后數據就消失了。這是因為程序運行時,所有的數據都存儲在內存中,當程序退出后,程序中的數據自然就不存在了。等下次再運行程序時,又要重新錄入數據,非常難受

    如何解決這個問題呢,我們可以學習使用文件來將其保存

    2.什么是文件

    2.1文件分類

    在程序設計中,一般將文件分為兩部分:程序文件和數據文件

    程序文件:

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

    數據文件:

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

    這次我們想要聊的是第二種數據文件,它可以幫助將我們運行時的數據存儲到磁盤中,以便我們下次使用

    2.2 文件名

    每一個文件都有自己的名字,它由三部分組成

    文件路徑+文件名主干+文件后綴

    c:\code\test.txt

    3.文件的打開和關閉

    3.1文件指針

    想要打開一個文件,我們需要使用到文件指針,該指針是由系統聲明的,例如,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;

    相信很多人看到這里,已經不想再讀下去了,堅持一下,前面這些并不重要

    3.2 如何使用文件指針

    首先我們需要定義一個文件指針

    FILE* pf

    想要將數據存儲到文件中或者從文件中讀取數據,我們先要將文件打開,ANSIC 規定使用fopen函數來打開文件。

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

    filename: 文件名

    mode : 文件的打開方式

    下面是一些常見的mode

    文件使用方式含義如果指定文件不存在
    “r”(只讀)為了輸入數據,打開一個已經存在的文本文件出錯
    “w”(只寫)為了輸出數據,打開一個文本文件建立一個新的文件
    “a”(追加)向文本文件尾添加數據建立一個新的文件
    “rb”(只讀)為了輸入數據,打開一個二進制文件出錯
    “wb”(只寫)為了輸出數據,打開一個二進制文件建立一個新的文件
    “ab”(追加)向一個二進制文件尾添加數據出錯
    “r+”(讀寫)為了讀和寫,打開一個文本文件出錯
    “w+”(讀寫)為了讀和寫,建議一個新的文件建立一個新的文件
    “a+”(讀寫)打開一個文件,在文件尾進行讀寫建立一個新的文件
    “rb+”(讀寫)為了讀和寫打開一個二進制文件出錯
    “wb+”(讀寫)為了讀和寫,新建一個新的二進制文件建立一個新的文件
    “ab+”(讀寫)打開一個二進制文件,在文件尾進行讀和寫建立一個新的文件

    注:這里的輸入是指將數據寫到內存中,輸出是寫到文件中

    3.讀寫數據后使用fclose關閉文件。

    int fclose ( FILE * stream );
    // 示例
    #include <stdio.h>
    int main ()
    {
      FILE * pFile;
      //打開文件
      pFile = fopen ("myfile.txt","w");
      //文件操作
      if (pFile!=NULL)
     {
        fputs ("fopen example",pFile);
        //關閉文件
        fclose (pFile);
     }
      return 0; 
    }

    4.文件的讀寫

    現在我們知道了,如何去打開一個文件,那么如何將它的數據輸入到程序中呢?

    首先我想介紹一些函數

    功能函數名適用于
    字符輸入函數fgetc所有輸入流
    字符輸出函數fputc所有輸出流
    文本行輸入函數fgets所有輸入流
    文本行輸出函數fputs所有輸出流
    格式化輸入函數fscanf所有輸入流
    格式化輸出函數fprintf所有輸出流
    二進制輸入fread文件
    二進制輸出fwrite文件

    看不懂? 沒關系,接下來我將用一個示例告訴你如何使用。

    //這是我以前寫通信錄時用到的一些方法
    typedef struct Contact
    {
    	struct contact_person* data;
    	int count;	//通訊錄中人員個數
    	int capacity;
    }Contact;//通訊錄類型的指針
    
    void Save(Contact* con) //將數據存儲到文件中
    {
    	FILE* fp = fopen("contact.txt", "wb");
    	if (fp == NULL)
    	{
    		printf("Save()::%s", strerror(errno)); //如果打開失敗,報錯
    		return;
    	}
    	else
    	{
    		fwrite(con->data, sizeof(struct contact_person), con->count, fp);//將數據寫到contect.txt中
    	}
    	fclose(fp); //關閉文件
    	fp = NULL;
    }
    
    void Load(Contact* con) //將文件中的數據加載到內存中
    {
    	FILE* fp = fopen("contact.txt", "r");
    	if (fp == NULL)
    	{
    		printf("Load()::%s", strerror(errno));
    		return;
    	}
    	else
    	{
    		struct contact_person tmp;
    		while (fread(&tmp, sizeof(struct contact_person), 1, fp))// fread的返回值為讀到數據的個數,用來判斷是否繼續讀取
    		{
    			Check_capacity(con);//檢測通訊錄容量是否足夠
    			con->data[con->count] = tmp;
    			con->count++;
    		}
    	}
    	fclose(fp);
    	fp = NULL;
    }

    以上就是“C語言中常見的文件操作方法是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

    向AI問一下細節

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

    AI

    灵川县| 汉中市| 中阳县| 祥云县| 聂拉木县| 若尔盖县| 德钦县| 青河县| 田林县| 西丰县| 霸州市| 清水县| 淮南市| 呼图壁县| 辰溪县| 准格尔旗| 荥经县| 崇礼县| 凤阳县| 小金县| 固原市| 平山县| 鄂伦春自治旗| 曲水县| 美姑县| 揭阳市| 娱乐| 泊头市| 尉犁县| 汉源县| 华池县| 同仁县| 洛宁县| 嵊州市| 四平市| 达日县| 登封市| 巴林左旗| 达孜县| 金寨县| 都匀市|