溫馨提示×

溫馨提示×

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

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

C語言文件怎么打開和關(guān)閉

發(fā)布時(shí)間:2022-04-27 10:49:48 來源:億速云 閱讀:154 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“C語言文件怎么打開和關(guān)閉”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

前言:

文件操作重要嗎?

當(dāng)然重要:如果我們想讓自己的程序擁有記憶功能,那就需要把要記憶的信息和數(shù)據(jù)存入到一個外部文件里,以便下次提取。

一、文件是什么

磁盤上的文件是文件。但在程序設(shè)計(jì)中,我們一般談的文件有兩種:程序文件、數(shù)據(jù)文件

  • 程序文件:包括源程序文件(后綴 .c),目標(biāo)文件(后綴 .obj)可執(zhí)行程序(windows環(huán)境后綴為 .exe)。

  • 數(shù)據(jù)文件:文件的內(nèi)容不一定是程序,而是程序運(yùn)行時(shí)讀寫的數(shù)據(jù),比如程序運(yùn)行需要從中讀取數(shù)據(jù)的文件,或則輸出內(nèi)容的文件。

VS編譯器上所處理的數(shù)據(jù)的輸入和輸出都是以終端為對象的,即從終端的鍵盤上輸入輸入數(shù)據(jù),運(yùn)行結(jié)果顯示到顯示器上。但在有時(shí)候我們會把數(shù)據(jù)輸出到磁盤上,在需要的時(shí)候再從磁盤上把數(shù)據(jù)讀取到內(nèi)存中使用,這里就是處理的磁盤上的文件。

文件包含三部分:文件路勁+文件名主干+文件后綴  

例如:c:\code\test.txt

二、文件類型

根據(jù)數(shù)據(jù)的組織形式數(shù)據(jù)文件被稱為文本文件二進(jìn)制文件

  • ASCII文件也稱為文本文件,這種文件在磁盤中存放時(shí)每個字符對應(yīng)一個字節(jié),用于存放對應(yīng)的ASCII碼

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

例如,數(shù)1000的存儲形式為:

ASCLL碼形式: 00110001 00110000 00110000 00110000 00110000 占5個字節(jié)
二進(jìn)制形式存儲:00000000 00000000 00100111 00010000 占4個字節(jié)

三、文件緩沖區(qū)

我們在學(xué)習(xí)C語言文件操作時(shí)我們也要簡單的了解一下C語言的文件緩沖區(qū)概念:

  • 緩沖區(qū)Buffer)又稱為緩存(Cache),是內(nèi)存空間的一部分。也就是說,計(jì)算機(jī)在內(nèi)存中預(yù)留了一定的存儲空間,用來暫時(shí)保存輸入或輸出的數(shù)據(jù),這部分預(yù)留的空間就叫做緩沖區(qū)(緩存)。

  • 在程序數(shù)據(jù)區(qū)到磁盤之間有輸出緩沖區(qū)輸入緩沖區(qū),這些有興趣的可以去深入了解一下

緩沖區(qū)是為了讓低速的輸入輸出設(shè)備和高速的用戶程序能夠協(xié)調(diào)工作,并降低輸入輸出設(shè)備的讀寫次數(shù)。

四、文件指針

緩沖文件系中:關(guān)鍵的概念是“文件類型指針”,簡稱**“文件指針”**
  每個被使用的文件都在內(nèi)存中開辟了一個相應(yīng)的文件信息區(qū),用來存放文件的相關(guān)信息(如:文件的名字,狀態(tài)及文件當(dāng)前的位置等)。這些信息保存在一個結(jié)構(gòu)體變量中的。該結(jié)構(gòu)體變量是有系統(tǒng)申明的取名:FILE

在使用的vs2013編譯器的頭文件stdio.h有以下的文件類型聲名:

C語言文件怎么打開和關(guān)閉

不同c編譯器的FILE所包含的內(nèi)容不完全相同,但是大同小異,

每當(dāng)打開一個文件的時(shí)候,系統(tǒng)會根據(jù)文件的情況自動創(chuàng)建一個FILE結(jié)構(gòu)的變量,并 填充其中的信息。

一般都是通過一個FILE的指針來維護(hù)這個結(jié)構(gòu)的變量。

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

定義pf是一個指向FILE類型數(shù)據(jù)的指針變量,可以使pf指向某個文件的文件信息區(qū)(是一個結(jié)構(gòu)體變量)。通過該文件信息區(qū)中的信息就可以訪問該文件。也就是說,通過文件指針變量能夠找到與它關(guān)聯(lián)的文件

C語言文件怎么打開和關(guān)閉

五、文件的打開和關(guān)閉

文件在讀寫之前應(yīng)該先打開文件,在使用結(jié)束之后應(yīng)該關(guān)閉文件

編寫程序時(shí),在打開文件的同時(shí),都會返回一個FILE的指針變量指向該文件相當(dāng)于建立了指針與文件的關(guān)系。

  • fopen 函數(shù)打開文件,fclose 來關(guān)閉文件

FILE *fopen(const char *filename, const char *mode);
int fclose(FILE *stream);

打開文件一般有兩種方式:

  • 當(dāng)前路勁下(相對路徑)打開文件

  • 絕對路徑打開

//以讀的方式打開
//當(dāng)前路勁下(相對路徑)打開文件test.txt
fopen("test.txt", "r");
//絕對路徑打開
fopen("E:\\C++file\\file\\test.txt", "r");

打開方式如下:

  • “r”(只讀) 為輸入打開一個已經(jīng)存在的文本文件

  • “w”(只寫) 為輸出打開一個文本文件

  • “a”(追加) 向文件文件尾添加數(shù)據(jù)

  • “rb”(只讀) 為輸入打開一個二進(jìn)制文件

  • “wb”(只寫) 為輸出打開一個二進(jìn)制文件

  • “r+”(讀寫) 為讀寫打開一個文本文件

  • “w+”(讀寫) 為讀寫建立一個新的文本文件

  • “a+”(讀寫) 為讀寫打開一個文本文件

  • “rb+”(讀寫) 為讀寫打開一個二進(jìn)制文件

  • “wb+”(讀寫) 為讀寫建立一個新的二進(jìn)制文件

  • “ab+”(讀寫) 為讀寫打開一個二進(jìn)制文件

注意:

  • 用 “r” 方式打開的文件,不能向其輸入數(shù)據(jù),并且該文件已存在,否則出錯;

  • 用 “w” 方式打開的文件,只能向該文件輸入數(shù)據(jù),如果所打開的文件不存在,則在打開時(shí)新建一個以指定的名字命名的文件;如果指定文件存在,則在打開時(shí)將該文件刪去,然后新建一個新的文件;

  • 如果函數(shù) fopen 打開文件出錯,則fopen返回一個空指針值 NULL;

  • 在程序開始運(yùn)行時(shí),系統(tǒng)自動打開3個標(biāo)準(zhǔn)文件:標(biāo)準(zhǔn)輸入(stdin),標(biāo)準(zhǔn)輸出(stdout),標(biāo)準(zhǔn)出錯輸 出(stderr)。如果要使用輸入輸出終端,則不需要打開,可以直接使用,如fputc(stdout,‘a’);向屏幕輸出字符a。

C語言文件怎么打開和關(guān)閉

  • 以讀的形式打開文件文件必須存在

  • 以寫的形式打開的文件,只能向該文件輸入數(shù)據(jù),如果所打開的文件不存在,則在打開時(shí)新建一個以指定的名字命名的文件;如果指定文件存在,則在打開時(shí)將該文件刪去,然后新建一個新的文件;

“C語言文件怎么打開和關(guān)閉”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI