文件典型例分析與解答

字號(hào):

1 二制文件中的數(shù)據(jù)存放格式是__________方式,整數(shù)-12345要占用_________字節(jié);文本文件的數(shù)據(jù)存放格式是_________方式,整數(shù)一12345要占用___________字節(jié)。
    【分析】教材(pl73)中有明確說(shuō)明,二進(jìn)制文件的的數(shù)據(jù)是以二進(jìn)制數(shù)方式存放的,其占的字節(jié)數(shù)就是該數(shù)據(jù)類型中規(guī)定的字節(jié)數(shù)(整型數(shù)據(jù)占用2個(gè)字節(jié))。文本文件中的數(shù)據(jù)是ASCII代碼方式存放的,數(shù)據(jù)中的每個(gè)字符都要占用1個(gè)字節(jié)。
    【答案】二進(jìn)制數(shù)
     2
     ASCII代碼
     6
    2 如果要定義一個(gè)文件型指針fp,應(yīng)該使用的定義語(yǔ)句是________________;同時(shí),在程序清單的開(kāi)頭要有一條_________________命令。
    【分析】文件型是系統(tǒng)在頭函數(shù)“stdio.h”中定義的一種結(jié)構(gòu)型,并且系統(tǒng)將其定義成用戶自定義的數(shù)據(jù)類型,名稱為“FILE”,所以程序中如果需要定義這種文件型指針,可以使用用戶自定義的數(shù)據(jù)類型符“FILE”來(lái)定義。由于這個(gè)用戶自定義的數(shù)據(jù)類型符是在頭函數(shù)“stdio.h”沖定義的,所以程序的開(kāi)頭要使用包含文件命令將“stdio.h”包含到本程序清單中。
    【答案】FILE *fp;
     #inclde "stdio.h"
    3 如果打開(kāi)文件時(shí),選用的文件操作方式為“wb+”,則下列說(shuō)法中錯(cuò)誤的是()
     ①要打開(kāi)的文件必須存在 ②要打開(kāi)的文件可以不存在
     ③打開(kāi)文件后可以讀取數(shù)據(jù) ④要打開(kāi)的文件是二進(jìn)制文件
    【分析】從教材(p174)中可以發(fā)現(xiàn),打開(kāi)文件時(shí)的操作方式中只要含有字符“w”,則這個(gè)文件可以存在,也可以不存在。當(dāng)文件不存在時(shí),系統(tǒng)會(huì)自動(dòng)建立一個(gè)新文件。分析備選答案①:顯然是錯(cuò)誤的說(shuō)法,是符合題意的答案。備選答案②顯然是正確的說(shuō)法。備選答案③的說(shuō)法是正確的,因?yàn)槲募僮鞣绞街兄灰小埃碧?hào),文件就可以讀寫。備選答案④的說(shuō)法也是正確的,因?yàn)槲募僮鞣绞街泻小癰”字符,表示文件是以二進(jìn)制文件方式處理的。
    【答案】①
    4 如果要求打開(kāi)一個(gè)a盤根目錄下、名為“ccw.dat”的二進(jìn)制文件用于讀和追加寫,則調(diào)用打開(kāi)文件函數(shù)的格式應(yīng)為_(kāi)________________;如果要求打開(kāi)一個(gè)C盤一級(jí)目錄ccw下、名為“ccw1.txt”的文本文件,并且用于只寫,則調(diào)用打開(kāi)文件函數(shù)的格式應(yīng)為_(kāi)____________________.
    【分析】打開(kāi)文件函數(shù)調(diào)用時(shí)需要確定兩個(gè)參數(shù):前一個(gè)是文件全名,后一個(gè)是文件操作方式。對(duì)本題的第1個(gè)空白來(lái)說(shuō),前一個(gè)參數(shù)是"a:\ccw. dat",后一個(gè)參數(shù)是”ab+”。對(duì)本題的第 2個(gè)空白來(lái)說(shuō),前一個(gè)參數(shù)是"c:\ccw\ccw1.txt",后一個(gè)參數(shù)是"w"。
    【答案】 fopen("a:\ccw.dat","ab+")
     fopen("c:\ CASEccw\ccw1.txt","w")
    5 假設(shè)文件型指針f已經(jīng)指向可寫的磁盤文件,并且正確執(zhí)行了函數(shù)調(diào)用“fputc('A',f)”,則該次調(diào)用后的函數(shù)返回值是___________________。
    【分析】對(duì)于函數(shù)“fputc()”的返回值是這樣規(guī)定的:正確寫出了字符,則返回值就是這個(gè)字符;寫字符出現(xiàn)錯(cuò)誤,則返回值是符號(hào)常量EOF,其值為-1。
    【答案】 字符'A' 或 整數(shù)65
    6 如果要將存放在雙精度型數(shù)組a[10」中的10個(gè)雙精度型實(shí)數(shù)寫到文件型指針fp1指向的文件中,正確的語(yǔ)句是()
     ① for(i=0;i<80;i++) fputc(a[i],fp1);
     ② for(i=0;i<10;i++) fputc(&a[i],fp1);
     ③ for(i=0;i<10;i++) fwrite(&a[i],8,l,fp1);
     ④ fwrite(fp1,8,10,a);
    【分析】分析備選答案①:由于循環(huán)控制變量i的值依次為0、1、…、 79,將會(huì)出現(xiàn)a[10]、 a[11]、…、a[79]的下標(biāo)越界,結(jié)果是錯(cuò)誤的;此外, fputc()函數(shù)調(diào)用時(shí)的第1個(gè)實(shí)參是雙精度型數(shù)據(jù),不是字符型數(shù)據(jù),也是錯(cuò)誤的。分析備選答案③:函數(shù)fputc()調(diào)用時(shí)的第1個(gè)實(shí)參是地址,不是字符型數(shù)據(jù),是錯(cuò)誤的。分析備選答案③:循環(huán)執(zhí)行10次,控制變量三的值依次等于0、1、…、9,每次輸出的數(shù)據(jù)是從地址a[i]開(kāi)始的8個(gè)字節(jié),恰好是存放在數(shù)組元素a[i」中的一個(gè)雙精度型數(shù)據(jù),所以是正確的,符合題意。至于備選答案④:參數(shù)的順序出現(xiàn)錯(cuò)誤,第1個(gè)參數(shù)應(yīng)該是輸出數(shù)據(jù)的首地址,第4個(gè)參數(shù)應(yīng)該是指向文件的文件型指針。
    【答案】③
    7 如果將主文件型指針fp指向的文件內(nèi)部指針置于文件尾,正確的語(yǔ)句是()
     ①feof(fp); ②rewind(fp);
     ③fseek(fp,OL,0); ④fseek(fp,OL,2);
    【分析】分析備選答案①:feof()函數(shù)的功能是測(cè)試文件尾,不是定位到文件尾;分析備選答案②:函數(shù)rewind()的功能是定位到函數(shù)頭,不是定位到函數(shù)尾;分析備選答案③:該語(yǔ)句的功能是定位到離基準(zhǔn)點(diǎn)(函數(shù)頭)偏離0個(gè)字節(jié)的位置上,實(shí)際上是定位到文件頭;只有備選答案④才符合題意。該答案中的語(yǔ)句是定位到離基準(zhǔn)點(diǎn)(文件尾)偏離0個(gè)字節(jié)的位置上,就是文件尾的位置。
    【答案】 ④