亚洲欧洲国产欧美一区精品,激情五月亚洲色五月,最新精品国偷自产在线婷婷,欧美婷婷丁香五月天社区

      考試首頁(yè) | 考試用書(shū) | 培訓(xùn)課程 | 模擬考場(chǎng) | 考試論壇  
      全國(guó)  |             |          |          |          |          |         
        當(dāng)前位置:計(jì)算機(jī)等級(jí) > 二級(jí)考試 > C語(yǔ)言程序設(shè)計(jì) > C語(yǔ)言輔導(dǎo) > 文章內(nèi)容
        

      全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C語(yǔ)言入門(mén)教程(129)

      中華IT學(xué)院   【 】  [ 2016年11月1日 ]


      文件的基本概念

      所謂“文件”是指一組相關(guān)數(shù)據(jù)的有序集合。 這個(gè)數(shù)據(jù)集有一個(gè)名稱(chēng),叫做文件名。 實(shí)際上在前面的各章中我
      們已經(jīng)多次使用了文件,例如源程序文件、目標(biāo)文件、可執(zhí)行文件、庫(kù)文件 (頭文件)等。文件通常是駐留在外部介質(zhì)
      (如磁盤(pán)等)上的,在使用時(shí)才調(diào)入內(nèi)存中來(lái)。從不同的角度可對(duì)文件作不同的分類(lèi)。從用戶(hù)的角度看,文件可分為普
      通文件和設(shè)備文件兩種。

      普通文件是指駐留在磁盤(pán)或其它外部介質(zhì)上的一個(gè)有序數(shù)據(jù)集,可以是源文件、目標(biāo)文件、可執(zhí)行程序; 也可以
      是一組待輸入處理的原始數(shù)據(jù),或者是一組輸出的結(jié)果。對(duì)于源文件、目標(biāo)文件、 可執(zhí)行程序可以稱(chēng)作程序文件,對(duì)
      輸入輸出數(shù)據(jù)可稱(chēng)作數(shù)據(jù)文件。

      設(shè)備文件是指與主機(jī)相聯(lián)的各種外部設(shè)備,如顯示器、打印機(jī)、鍵盤(pán)等。在操作系統(tǒng)中,把外部設(shè)備也看作是一
      個(gè)文件來(lái)進(jìn)行管理,把它們的輸入、輸出等同于對(duì)磁盤(pán)文件的讀和寫(xiě)。 通常把顯示器定義為標(biāo)準(zhǔn)輸出文件, 一般情
      況下在屏幕上顯示有關(guān)信息就是向標(biāo)準(zhǔn)輸出文件輸出。如前面經(jīng)常使用的printf,putchar 函數(shù)就是這類(lèi)輸出。鍵盤(pán)
      通常被指定標(biāo)準(zhǔn)的輸入文件,從鍵盤(pán)上輸入就意味著從標(biāo)準(zhǔn)輸入文件上輸入數(shù)據(jù)。scanf,getchar函數(shù)就屬于這類(lèi)輸
      入。

      從文件編碼的方式來(lái)看,文件可分為 ASCII碼文件和二進(jìn)制碼文件兩種。

      ASCII文件也稱(chēng)為文本文件,這種文件在磁盤(pán)中存放時(shí)每個(gè)字符對(duì)應(yīng)一個(gè)字節(jié),用于存放對(duì)應(yīng)的 ASCII碼。例如,
      數(shù) 5678的存儲(chǔ)形式為:
      ASC碼: 00110101 00110110 00110111 00111000

       ↓ ↓↓ ↓
      十進(jìn)制碼: 5 6 78共占用 4個(gè)字節(jié)。ASCII碼文件可在屏幕上按字符顯示, 例如源程序
      文件就是 ASCII文件,用 DOS命令 TYPE可顯示文件的內(nèi)容。 由于是按字符顯示,因此能讀懂文件內(nèi)容。

      二進(jìn)制文件是按二進(jìn)制的編碼方式來(lái)存放文件的。 例如, 數(shù)5678的存儲(chǔ)形式為: 00010110 00101110只占二
      個(gè)字節(jié)。二進(jìn)制文件雖然也可在屏幕上顯示, 但其內(nèi)容無(wú)法讀懂。C系統(tǒng)在處理這些文件時(shí),并不區(qū)分類(lèi)型,都看成
      是字符流,按字節(jié)進(jìn)行處理。 輸入輸出字符流的開(kāi)始和結(jié)束只由程序控制而不受物理符號(hào)(如回車(chē)符)的控制。 因此
      也把這種文件稱(chēng)作“流式文件”。

      本章討論流式文件的打開(kāi)、關(guān)閉、讀、寫(xiě)、 定位等各種操作。文件指針在C語(yǔ)言中用一個(gè)指針變量指向一個(gè)文件,
      這個(gè)指針?lè)Q為文件指針。通過(guò)文件指針就可對(duì)它所指的文件進(jìn)行各種操作。 定義說(shuō)明文件指針的一般形式為: FILE*
      指針變量標(biāo)識(shí)符; 其中 FILE應(yīng)為大寫(xiě),它實(shí)際上是由系統(tǒng)定義的一個(gè)結(jié)構(gòu), 該結(jié)構(gòu)中含有文件名、文件狀態(tài)和文件
      當(dāng)前位置等信息。 在編寫(xiě)源程序時(shí)不必關(guān)心FILE結(jié)構(gòu)的細(xì)節(jié)。例如:FILE *fp; 表示fp是指向FILE結(jié)構(gòu)的指針變
      量,通過(guò)fp 即可找存放某個(gè)文件信息的結(jié)構(gòu)變量,然后按結(jié)構(gòu)變量提供的信息找到該文件, 實(shí)施對(duì)文件的操作。習(xí)
      慣上也籠統(tǒng)地把 fp稱(chēng)為指向一個(gè)文件的指針。文件的打開(kāi)與關(guān)閉文件在進(jìn)行讀寫(xiě)操作之前要先打開(kāi),使用完畢要關(guān)閉。
      所謂打開(kāi)文件,實(shí)際上是建立文件的各種有關(guān)信息,并使文件指針指向該文件,以便進(jìn)行其它操作。關(guān)閉文件則斷開(kāi)
      指針與文件之間的聯(lián)系,也就禁止再對(duì)該文件進(jìn)行操作。

      在C語(yǔ)言中,文件操作都是由庫(kù)函數(shù)來(lái)完成的。 在本章內(nèi)將介紹主要的文件操作函數(shù)。


      文件打開(kāi)函數(shù)fopen

      fopen函數(shù)用來(lái)打開(kāi)一個(gè)文件,其調(diào)用的一般形式為: 文件指針名=fopen(文件名,使用文件方式) 其中,“文
      件指針名”必須是被說(shuō)明為FILE 類(lèi)型的指針變量,“文件名”是被打開(kāi)文件的文件名。“使用文件方式”是指文件
      的類(lèi)型和操作要求!拔募笔亲址A炕蜃址?dāng)?shù)組。例如:
      FILE *fp;
      fp=("file a","r");
      其意義是在當(dāng)前目錄下打開(kāi)文件file a, 只允許進(jìn)行“讀”操作,并使 fp指向該文件。
      又如:
      FILE *fphzk
      fphzk=("c:\\hzk16',"rb")
      其意義是打開(kāi)C驅(qū)動(dòng)器磁盤(pán)的根目錄下的文件hzk16, 這是一個(gè)二進(jìn)制文件,只允許按二進(jìn)制方式進(jìn)行讀操作。兩個(gè)
      反斜線(xiàn)“\\ ”中的第一個(gè)表示轉(zhuǎn)義字符,第二個(gè)表示根目錄。使用文件的方式共有12種,下面給出了它們的符號(hào)和

      意義。
      文件使用方式意 義
      “rt” 只讀打開(kāi)一個(gè)文本文件,只允許讀數(shù)據(jù)
      “wt” 只寫(xiě)打開(kāi)或建立一個(gè)文本文件,只允許寫(xiě)數(shù)據(jù)
      “at” 追加打開(kāi)一個(gè)文本文件,并在文件末尾寫(xiě)數(shù)據(jù)
      “rb” 只讀打開(kāi)一個(gè)二進(jìn)制文件,只允許讀數(shù)據(jù)
      “wb” 只寫(xiě)打開(kāi)或建立一個(gè)二進(jìn)制文件,只允許寫(xiě)數(shù)據(jù)
      “ab”追加打開(kāi)一個(gè)二進(jìn)制文件,并在文件末尾寫(xiě)數(shù)據(jù)
      “rt+” 讀寫(xiě)打開(kāi)一個(gè)文本文件,允許讀和寫(xiě)
      “wt+” 讀寫(xiě)打開(kāi)或建立一個(gè)文本文件,允許讀寫(xiě)
      “at+” 讀寫(xiě)打開(kāi)一個(gè)文本文件,允許讀,或在文件末追加數(shù) 據(jù)
      “rb+” 讀寫(xiě)打開(kāi)一個(gè)二進(jìn)制文件,允許讀和寫(xiě)
      “wb+” 讀寫(xiě)打開(kāi)或建立一個(gè)二進(jìn)制文件,允許讀和寫(xiě)
      “ab+” 讀寫(xiě)打開(kāi)一個(gè)二進(jìn)制文件,允許讀,或在文件末追加數(shù)據(jù)

      對(duì)于文件使用方式有以下幾點(diǎn)說(shuō)明:

      1. 文件使用方式由 r,w,a,t,b,+六個(gè)字符拼成,各字符的含義是:
      r(read): 讀
      w(write): 寫(xiě)
      a(append): 追加
      t(text): 文本文件,可省略不寫(xiě)
      b(banary): 二進(jìn)制文件
      +: 讀和寫(xiě)
      2. 凡用“r”打開(kāi)一個(gè)文件時(shí),該文件必須已經(jīng)存在, 且只能從該文件讀出。
      3. 用“w”打開(kāi)的文件只能向該文件寫(xiě)入。若打開(kāi)的文件不存在,則以指定的文件名建立該文件,若打開(kāi)的文件已經(jīng)
      存在,則將該文件刪去,重建一個(gè)新文件。
      4. 若要向一個(gè)已存在的文件追加新的信息,只能用“a”方式打開(kāi)文件。但此時(shí)該文件必須是存在的,否則將會(huì)出錯(cuò)。
      5. 在打開(kāi)一個(gè)文件時(shí),如果出錯(cuò),fopen將返回一個(gè)空指針值NULL。在程序中可以用這一信息來(lái)判別是否完成打開(kāi)文
      件的工作,并作相應(yīng)的處理。因此常用以下程序段打開(kāi)文件:
      if((fp=fopen("c:\\hzk16","rb")==NULL)
      {
      printf("\nerror on open c:\\hzk16 file!");
      getch();
      exit(1);
      }


      這段程序的意義是,如果返回的指針為空,表示不能打開(kāi)C盤(pán)根目錄下的 hzk16文件,則給出提示信息“error on
      open c:\ hzk16file!”,下一行g(shù)etch()的功能是從鍵盤(pán)輸入一個(gè)字符,但不在屏幕上顯示。在這里,該行的作用是
      等待, 只有當(dāng)用戶(hù)從鍵盤(pán)敲任一鍵時(shí),程序才繼續(xù)執(zhí)行, 因此用戶(hù)可利用這個(gè)等待時(shí)間閱讀出錯(cuò)提示。敲鍵后執(zhí)行
      exit(1)退出程序。

      6. 把一個(gè)文本文件讀入內(nèi)存時(shí),要將ASCII碼轉(zhuǎn)換成二進(jìn)制碼, 而把文件以文本方式寫(xiě)入磁盤(pán)時(shí),也要把二進(jìn)制碼

      轉(zhuǎn)換成ASCII碼,因此文本文件的讀寫(xiě)要花費(fèi)較多的轉(zhuǎn)換時(shí)間。對(duì)二進(jìn)制文件的讀寫(xiě)不存在這種轉(zhuǎn)換。

      7. 標(biāo)準(zhǔn)輸入文件(鍵盤(pán)),標(biāo)準(zhǔn)輸出文件(顯示器 ),標(biāo)準(zhǔn)出錯(cuò)輸出(出錯(cuò)信息)是由系統(tǒng)打開(kāi)的,可直接使用。文件關(guān)
      閉函數(shù)fclose文件一旦使用完畢,應(yīng)用關(guān)閉文件函數(shù)把文件關(guān)閉, 以避免文件的數(shù)據(jù)丟失等錯(cuò)誤。
      fclose函數(shù)

      調(diào)用的一般形式是: fclose(文件指針); 例如:
      fclose(fp); 正常完成關(guān)閉文件操作時(shí),fclose函數(shù)返回值為 0。如返回非零值則表示有錯(cuò)誤發(fā)生。文件的讀寫(xiě)對(duì)文
      件的讀和寫(xiě)是最常用的文件操作。

      在C語(yǔ)言中提供了多種文件讀寫(xiě)的函數(shù):

      ·字符讀寫(xiě)函數(shù) :fgetc和 fputc
      ·字符串讀寫(xiě)函數(shù):fgets和 fputs
      ·數(shù)據(jù)塊讀寫(xiě)函數(shù):freed和 fwrite
      ·格式化讀寫(xiě)函數(shù):fscanf和 fprinf
      下面分別予以介紹。使用以上函數(shù)都要求包含頭文件stdio.h。字符讀寫(xiě)函數(shù)fgetc和fputc字符讀寫(xiě)
      函數(shù)是以字符(字節(jié))為單位的讀寫(xiě)函數(shù)。 每次可從文件讀出或向文件寫(xiě)入一個(gè)字符。

      分享到:
      本文糾錯(cuò)】【告訴好友】【打印此文】【返回頂部
      將考試網(wǎng)添加到收藏夾 | 每次上網(wǎng)自動(dòng)訪(fǎng)問(wèn)考試網(wǎng) | 復(fù)制本頁(yè)地址,傳給QQ/MSN上的好友 | 申請(qǐng)鏈接 | 意見(jiàn)留言 TOP
      關(guān)于本站  網(wǎng)站聲明  廣告服務(wù)  聯(lián)系方式  站內(nèi)導(dǎo)航  考試論壇
      Copyright © 2006-2017 中華考試網(wǎng)(Examw.com) All Rights Reserved  營(yíng)業(yè)執(zhí)照