8.1 單項(xiàng)選擇題
1.若與文件型指針中相關(guān)聯(lián)的文件的當(dāng)前讀位置已到了文件的末尾,則函數(shù)feof(fp)的返回值是( )
①0 ②-l
③非零值 ④NULL
【解】當(dāng)調(diào)用fopen函數(shù)時(shí),系統(tǒng)將為實(shí)參文件設(shè)定一個(gè)存放文件讀寫控制信息的控制塊。該控制塊記錄有關(guān)文件持征、使用方式,當(dāng)前讀寫位置等文件狀態(tài),并將該控制塊的指針返回,作為文件指針變量的值。以后程序通過該指針調(diào)用函數(shù)時(shí),系統(tǒng)能訪問到這個(gè)控制塊,利用該文件控制塊中的控制信息,正確完成文件的讀或?qū)?。所以文件指針并不真正指向文件?dāng)前讀寫位置,但通過文件指針,系統(tǒng)能在文件控制塊中訪問文件的當(dāng)前讀寫位置。若某文件與文件指針中相關(guān)聯(lián)著,該文件的當(dāng)前讀寫位置在文件的末尾時(shí),函數(shù)調(diào)用feof(fp)的返回值是一個(gè)非零值。所以正確解答是③。
2.下列語句中,將C定義為文件型指針的是( )
① FILE c; ② FILE *c; ③ file c; ④ file *c;
【解】如上題所述,文件控制塊的類型已由系統(tǒng)命名為FILE。所以定義文件指針變量是C,就得用代碼:“FILE *c;”。所以正確解答是②。
3.標(biāo)準(zhǔn)庫函數(shù)fputs(pl,p2)的功能是( )
①從pl指向的文件中讀一個(gè)字符率存入p2指向的內(nèi)存
②從p2指向的文件中讀一個(gè)字符串存入pl指向的內(nèi)存
③從pl指向的內(nèi)存中的一個(gè)字符串輸出到p2指向的文件
④從p2指向的內(nèi)存中的一個(gè)字符串輸出到pl指向的文件
【解】標(biāo)準(zhǔn)函數(shù)調(diào)用fputs(p1,p2)完成的功能是將由字符指針pl所指的字符串內(nèi)容輸出到與文件指針p2相關(guān)聯(lián)的文件中,即將從pl所指的內(nèi)存中的字符串內(nèi)容輸出到p2所指向的文件中。所以正確解答是③。
8.2 填充題
1."FILE *p"的作用是定義一個(gè)______,其中的"FILE"是在________頭文件中定義的。
【解】代碼"FILE *p"的作用是定義一個(gè)文件指針變量,其中的FILE是在標(biāo)準(zhǔn)輸入輸出頭文件stdio.h中定義的。
2.在對(duì)文件進(jìn)行操作的過程中,若要求文件的現(xiàn)行位置回到文件的開頭,應(yīng)當(dāng)調(diào)用的函數(shù)是_______函數(shù)。
【解】若要讓文件隨機(jī)地從某個(gè)現(xiàn)行位置回到文件的開頭,可調(diào)用庫函數(shù)rewind( )。
3.下面的程序用來統(tǒng)計(jì)文件中字符的個(gè)數(shù),請(qǐng)?zhí)羁铡?BR> # include
# include
main()
{ FILE *fp;
long num=0;
if(( fp =fopen("fname.day","r"))== NULL)
{ printf("Cann’t open file! \n"); etit(0); }
while________ { fgetc(fp); num++; }
printf("num =%d \n". num);
fclose(fp);
}
【解】若要統(tǒng)計(jì)文件中的字符個(gè)數(shù),程序設(shè)計(jì)一個(gè)計(jì)數(shù)器,并預(yù)置該計(jì)數(shù)器為0值,并打開文件。在正確打開情況下,接著是一個(gè)循環(huán)。循環(huán)在文件未結(jié)束的情況下,反復(fù)讀人字符,并增加字符計(jì)數(shù)器。所以循環(huán)條件可寫成:!feof(fp)。程序有一個(gè)錯(cuò)誤,由于num變量的類型是long型的,輸出它的值應(yīng)在格式符d之前加上格式修飾符’l’,不加這個(gè)修飾符只有在long型與int型實(shí)現(xiàn)相同的系統(tǒng)才是正確的。另外,要統(tǒng)計(jì)文件的長度,用二進(jìn)制方式打開,通過讀入的字節(jié)數(shù)求出文件的長。這是因?yàn)檎奈募绞酱蜷_時(shí),文件中的雙字符(回車字符和換行字符)讀入后將被當(dāng)作一個(gè)字符存儲(chǔ),二進(jìn)制方式不進(jìn)行這樣的轉(zhuǎn)換。
1.若與文件型指針中相關(guān)聯(lián)的文件的當(dāng)前讀位置已到了文件的末尾,則函數(shù)feof(fp)的返回值是( )
①0 ②-l
③非零值 ④NULL
【解】當(dāng)調(diào)用fopen函數(shù)時(shí),系統(tǒng)將為實(shí)參文件設(shè)定一個(gè)存放文件讀寫控制信息的控制塊。該控制塊記錄有關(guān)文件持征、使用方式,當(dāng)前讀寫位置等文件狀態(tài),并將該控制塊的指針返回,作為文件指針變量的值。以后程序通過該指針調(diào)用函數(shù)時(shí),系統(tǒng)能訪問到這個(gè)控制塊,利用該文件控制塊中的控制信息,正確完成文件的讀或?qū)?。所以文件指針并不真正指向文件?dāng)前讀寫位置,但通過文件指針,系統(tǒng)能在文件控制塊中訪問文件的當(dāng)前讀寫位置。若某文件與文件指針中相關(guān)聯(lián)著,該文件的當(dāng)前讀寫位置在文件的末尾時(shí),函數(shù)調(diào)用feof(fp)的返回值是一個(gè)非零值。所以正確解答是③。
2.下列語句中,將C定義為文件型指針的是( )
① FILE c; ② FILE *c; ③ file c; ④ file *c;
【解】如上題所述,文件控制塊的類型已由系統(tǒng)命名為FILE。所以定義文件指針變量是C,就得用代碼:“FILE *c;”。所以正確解答是②。
3.標(biāo)準(zhǔn)庫函數(shù)fputs(pl,p2)的功能是( )
①從pl指向的文件中讀一個(gè)字符率存入p2指向的內(nèi)存
②從p2指向的文件中讀一個(gè)字符串存入pl指向的內(nèi)存
③從pl指向的內(nèi)存中的一個(gè)字符串輸出到p2指向的文件
④從p2指向的內(nèi)存中的一個(gè)字符串輸出到pl指向的文件
【解】標(biāo)準(zhǔn)函數(shù)調(diào)用fputs(p1,p2)完成的功能是將由字符指針pl所指的字符串內(nèi)容輸出到與文件指針p2相關(guān)聯(lián)的文件中,即將從pl所指的內(nèi)存中的字符串內(nèi)容輸出到p2所指向的文件中。所以正確解答是③。
8.2 填充題
1."FILE *p"的作用是定義一個(gè)______,其中的"FILE"是在________頭文件中定義的。
【解】代碼"FILE *p"的作用是定義一個(gè)文件指針變量,其中的FILE是在標(biāo)準(zhǔn)輸入輸出頭文件stdio.h中定義的。
2.在對(duì)文件進(jìn)行操作的過程中,若要求文件的現(xiàn)行位置回到文件的開頭,應(yīng)當(dāng)調(diào)用的函數(shù)是_______函數(shù)。
【解】若要讓文件隨機(jī)地從某個(gè)現(xiàn)行位置回到文件的開頭,可調(diào)用庫函數(shù)rewind( )。
3.下面的程序用來統(tǒng)計(jì)文件中字符的個(gè)數(shù),請(qǐng)?zhí)羁铡?BR> # include
# include
main()
{ FILE *fp;
long num=0;
if(( fp =fopen("fname.day","r"))== NULL)
{ printf("Cann’t open file! \n"); etit(0); }
while________ { fgetc(fp); num++; }
printf("num =%d \n". num);
fclose(fp);
}
【解】若要統(tǒng)計(jì)文件中的字符個(gè)數(shù),程序設(shè)計(jì)一個(gè)計(jì)數(shù)器,并預(yù)置該計(jì)數(shù)器為0值,并打開文件。在正確打開情況下,接著是一個(gè)循環(huán)。循環(huán)在文件未結(jié)束的情況下,反復(fù)讀人字符,并增加字符計(jì)數(shù)器。所以循環(huán)條件可寫成:!feof(fp)。程序有一個(gè)錯(cuò)誤,由于num變量的類型是long型的,輸出它的值應(yīng)在格式符d之前加上格式修飾符’l’,不加這個(gè)修飾符只有在long型與int型實(shí)現(xiàn)相同的系統(tǒng)才是正確的。另外,要統(tǒng)計(jì)文件的長度,用二進(jìn)制方式打開,通過讀入的字節(jié)數(shù)求出文件的長。這是因?yàn)檎奈募绞酱蜷_時(shí),文件中的雙字符(回車字符和換行字符)讀入后將被當(dāng)作一個(gè)字符存儲(chǔ),二進(jìn)制方式不進(jìn)行這樣的轉(zhuǎn)換。