版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第10章文件及其應用第10章文件及其應用主要內容文本文件的讀寫二進制文件的讀寫文件的定位與隨機讀寫主要內容文本文件的讀寫文本文件的讀寫
應知:-文件的分類-文本文件讀寫的步驟-文本文件讀寫函數的功能及函數參數的含義應會:
-文本文件的打開、讀寫、關閉-將單個字符、字符串進行文件讀寫,進行文件復制等程序的編寫難點:-文件的讀寫文本文件的讀寫應知:英文詞匯File文件Read讀Write寫B(tài)uffer緩沖區(qū)英文詞匯File文件提問指針變量的數據類型如何確定?指針變量作為函數參數時,值或地址傳遞?創(chuàng)建鏈表的算法?提問知識回顧:線性鏈表簡單敘述輸出鏈表所有結點的數據域(遍歷)的算法思路定義一個結點類型的指針變量current作為循環(huán)變量,并賦初始值為pHead,指向鏈表頭結點.輸出current所指向結點的數據.將current指向下一個結點.循環(huán)結束條件是current=NULL.知識回顧:線性鏈表簡單敘述輸出鏈表所有結點的數據域(遍歷)的學一學:文件基礎知識對文件的操作只有讀和寫兩種,通常情況下,將內存中的數據寫入到文件,稱為文件的輸出;將文件中的數據讀入到內存稱為文件的輸入。C語言中,以緩沖文件系統(tǒng)方式讀寫文件的步驟為①定義文件指針;
②打開文件;③讀寫文件;④關閉文件。學一學:文件基礎知識對文件的操作只有讀和寫兩種,通常情況下,學一學1.定義文件指針一般形式為:
FILE*fp;其中fp就是所定義文件指針。FILE類型以及所有的文件讀寫函數和相關常量都定義在文件stdio.h中,在源程序的開頭要包含頭文件stdio.h。學一學1.定義文件指針
學一學2.打開文件
C語言中,使用fopen函數來打開文件。fopen函數的調用形式:fopen(chFileName,mode);以mode方式打開文件chFileName。其中,參數chFileName是將要讀寫文件的文件名,mode為文件的操作方式。若文件打開成功,返回一個文件指針,若打開失敗,則返回空值NULL,NULL在stdio.h中被定義為0。文件操作方式mode是一個整數,其取值及含義如表10-1所示。
學一學2.打開文件學一學
學一學學一學3.文件的讀寫通過函數進行。文本文件的讀寫函數主要有fgetc和fputc,fgets和fputs,其調用形式如表10-2所示。表10-2中的EOF是文件結束標志,定義在文件stdio.h中,其值為-1,可用來判斷文本文件是否結束。學一學3.文件的讀寫通過函數進行。文本文件的讀寫函數主要有學一學4.關閉文件
C語言使用fclose函數關閉文件。關閉文件就是使原來指向該文件的文件指針與文件脫離,fclose的調用形式為:
fclose(fp);
關閉文件指針fp所指的文件。若文件關閉成功,返回值為NULL,否則,返回一個非0值,表示關閉文件時出錯。學一學4.關閉文件試一試問題10.1編一程序從鍵盤輸入一串字符“mayfriendshipforever!”,然后保存在文件myInfo.txt中。調試問題10.1程序,觀察運行結果試一試問題10.1編一程序從鍵盤輸入一串字符“mayfri想一想問題10.1用fputs函數實現應如何修改程序?請根據提示寫出完整程序。提示:(1)刪除語句inti;(2)可將語句i=0;while(chInfo[i]!='\0'){fputc(chInfo[i],fp);i++;}改為:fputs(chInfo,fp);想一想問題10.1用fputs函數實現應如何修改程序?請試一試問題10.2:打開問題10.1生成的文件myInfo.txt,將其中的內容顯示在屏幕上,要求文件名從命令行參數輸入?!窘忸}步驟】1.定義文件指針fp;2.定義字符變量用來存放從文件中讀取的字符;3.以讀文本文件方式打開文件(文件名由命令行參數輸入);4.如果打開文件失敗,則輸出錯誤信息并結束程序;5.讀取文件中的內容并顯示在屏幕上;6.關閉文件。試一試問題10.2:打開問題10.1生成的文件myInfo想一想
問題10.2用fgets函數實現應如何修改程序?請根據提示寫出完整程序。提示:(1)語句charch;改為char*chInfo;
(2)語句ch=fgetc(fp);while(ch!=EOF){putchar(ch);ch=fgetc(fp);}
改為:fgets(chInfo,100,fp);printf("%s",chInfo);注意,fgets函數中的第2個參數為要讀取的字符數,要大于或等于文件的長度+1。想一想問題10.2用fgets函數實現應如何修改程序練一練問題:編一程序實現文件的拷貝,將文件myInfo.txt拷貝到文件myBak.txt。要求源文件名和目標文件名都在程序運行時通過鍵盤輸入,可將其存放在兩個字符數組中,然后再在打開文件時使用。練一練問題與討論什么是緩沖文件系統(tǒng),有什么優(yōu)點?二進制文件和文本文件各有什么優(yōu)缺點?問題與討論什么是緩沖文件系統(tǒng),有什么優(yōu)點?學生容易錯的地方文件操作完畢后不關閉文件;文件打開時沒有賦給一個文件指針。
學生容易錯的地方文件操作完畢后不關閉文件;小結:1.文件的存儲形式。數據在內存中以二進制形式存放,當把內存中的數據輸出到磁盤文件中時可以用兩種形式存儲,即字符形式或二進制形式。2.在C語言中,系統(tǒng)定義了一個文件類型FILE,用來實現緩沖文件系統(tǒng)方式下文件的讀寫操作,文件指針就是一個FILE類型的指針變量,由此實現文件的具體讀寫。3.其它讀寫函數。C語言提供了多種以緩沖文件系統(tǒng)方式讀寫文本文件的函數,在ANSIC中,還有格式化讀寫函數fprintf和fscanf可用來讀寫文本文件。小結:1.文件的存儲形式。數據在內存中以二進制形式存放,當把二進制文件的讀寫
應知:-二進制文件讀寫的步驟-二進制文件讀寫函數的功能及函數參數的含義應會:
-二進制文件的打開、讀寫、關閉-對數據塊進行操作難點:
-對數據塊進行讀寫二進制文件的讀寫應知:英文詞匯File文件Binary二進制英文詞匯File提問什么是緩沖文件系統(tǒng),有什么優(yōu)點?二進制文件和文本文件各有什么優(yōu)缺點?提問知識回顧:文本文件簡單敘述文件操作四步驟定義文件指針
.打開文件
.讀寫文件
.關閉文件
.知識回顧:文本文件簡單敘述文件操作四步驟學一學:二進制文件的讀寫對于二進制文件,以緩沖文件系統(tǒng)方式讀寫文件的步驟同樣為以下四個步驟:
①定義文件指針;②打開文件;③讀寫文件;④關閉文件。其中定義文件指針、打開文件和關閉文件的操作在上一節(jié)中已介紹過,這里主要學習用來讀寫二進制文件的兩個函數fread和fwrite。學一學:二進制文件的讀寫對于二進制文件,以緩沖文件系統(tǒng)方式讀學一學塊寫入函數fwrite的調用形式為:
fwrite(buffer,size,n,fp)將buffer開始處的n個大小為size字節(jié)的數據塊(記錄)寫入到文件指針fp所指向的文件中。成功返回數據塊(記錄)個數n,不成功返回0。塊讀取函數fread的調用形式為:
fread(buffer,size,n,fp)從文件指針fp所指向的文件中讀取n個大小為size個字節(jié)的數據塊(記錄)到buffer所指向的地址空間。成功返回數據塊(記錄)個數n,出錯或遇文件結束返回0。學一學塊寫入函數fwrite的調用形式為:試一試問題10.3編一程序從鍵盤輸入5個整數并寫入到文件test.dat中。
調試問題10.3程序,觀察運行結果試一試問題10.3編一程序從鍵盤輸入5個整數并寫入到文件t想一想將問題10.3中的5個整數改為5個實數寫入文件testFloat.dat中應如何修改程序?想一想將問題10.3中的5個整數改為5個實數寫入文件test試一試問題10.4編一程序從問題10.3寫入的文件test.dat中讀取數據并顯示在屏幕上。
【解題步驟】1.定義整型數組iArray用來存放5個整數;2.定義整型變量i作為循環(huán)變量;3.定義文件指針fp;4.以讀二進制文件方式打開文件test.dat;5.如果打開文件失敗,則輸出錯誤信息并結束程序;6.從文件中讀取5個整數并存放在數組iArray中;7.顯示數組iArray中的元素;8.關閉文件。試一試問題10.4編一程序從問題10.3寫入的文件test想一想文件testFloat.dat中存有5個實數,請讀取并顯示出來,應如何實現?想一想文件testFloat.dat中存有5個實數,請讀取并試一試問題10.5編一程序從鍵盤輸入5個學生的成績記錄并寫入到文件stdScore.dat中。5個學生的成績記錄見表10-3。試一試問題10.5編一程序從鍵盤輸入5個學生的成績記錄并寫調試問題10.5程序,觀察運行結果調試問題10.5程序,觀察運行結果想一想問題10.5的寫文件操作是每次寫入一個學生的信息,循環(huán)5次,如果不使用循環(huán)語句而一次性地將5個學生數據寫入文件,應該怎樣實現?想一想問題10.5的寫文件操作是每次寫入一個學生的信息,循環(huán)試一試問題10.6編一程序將問題10.5所寫的文件stdScore.dat中的數據顯示在屏幕上?!窘忸}步驟】
1.定義學生成績結構體類型type_score;2.定義結構體類型type_scor數組stScore[5]用來存放從文件中讀取的信息;3.定義文件指針fp;4.定義整型變量i作為循環(huán)變量;5.以讀二進制文件方式打開文件stdScore.dat;6.如果打開文件失敗,則輸出錯誤信息并結束程序;7.逐條讀取文件中的記錄存放在結構體數組stScore中8.關閉文件;9.顯示結構體數組stScore中的數據。試一試問題10.6編一程序將問題10.5所寫的文件stdS想一想問題10.6的讀取文件操作是每次讀出一個學生的信息,循環(huán)5次,如果不使用循環(huán)語句而一次性地讀出5個學生的數據,程序怎樣更改?想一想練一練問題:編一程序從文件stdScore.dat(問題10.5已寫入數據)中將姓名、學號和數學成績3個字段的數據保存在文件stdMath.dat中。練一練問題與討論為什么使用數據塊讀寫函數?EOF是否可以用來檢測二進制文件的結束?怎樣檢測二進制文件的結束?問題與討論為什么使用數據塊讀寫函數?學生容易錯的地方對不存在的文件進行讀操作;操作方式不熟悉。
學生容易錯的地方對不存在的文件進行讀操作;小結1.使用fread和fwrite函數可以方便地讀寫任意類型的數據,比如int型、float型、char型等基本類型以及結構體類型的數據。2.使用fwrite函數寫入數據的文件是二進制文件。小結1.使用fread和fwrite函數可以方便地讀寫任意類文件的定位與隨機讀寫
應知:-以緩沖文件系統(tǒng)方式隨機讀寫文件的步驟-指定文件位置值的含義應會:
-文件讀寫指針位置的重置-文件讀寫指針位置的隨機定位
難點:
-文件讀寫指針位置的隨機定位
文件的定位與隨機讀寫應知:英文詞匯Rewind重置Seek定位英文詞匯Rewind提問fputc()函數與fputs()函數的區(qū)別是什么?fgetc()函數與fgets()函數的區(qū)別是什么?
提問學一學:文件的定位與隨機讀寫文件中有一個位置指針,指向當前讀寫的位置。當順序讀寫一個文件時,每讀寫完一個一個數據單位(一個字符,或一個整數,或一個結構體變量)后,位置指針自動移向下一個數據單位位置,如果想改變這種順序,就需要強制使位置指針指向指定的位置。以緩沖文件系統(tǒng)方式隨機讀寫文件的步驟為①定義文件指針;②打開文件;③文件的定位;④讀寫文件;⑤關閉文件。文件的定位可以通過重置位置指針函數rewind和隨機定位函數fseek來實現。學一學:文件的定位與隨機讀寫文件中有一個位置指針,指向當前讀學一學1.重置位置指針函數rewind的調用形式:
rewind(fp);使文件的讀寫位置指針重新移到文件的開頭。其中fp指向正在讀寫的文件。該函數沒有返回值。2.隨機定位函數fseek的調用形式:
fseek(fp,lOffset,iOrigin)將文件指針fp所指文件的位置指針移到指定的位置,該位置與iOrigin所代表的文件位置相距l(xiāng)Offset個字節(jié)。iOrigin可以是三個給定文件位置中的一個,用三個符號常量(在stdio.h中定義)或0,1,2來表示,具體含義見表10-4。學一學1.重置位置指針函數rewind的調用形式:學一學學一學試一試問題10.7編程將1,2,3,……10十個整數寫入文件testRand.dat,然后再從文件中讀取1,3,5,7,9五個數字并顯示。
調試問題10.7程序,觀察運行結果試一試問題10.7編程將1,2,3,……10十個整數寫入文想一想
對于問題10.7,如果要讀取文件testRand.dat中的2,4,6,8,10并顯示,應該如何修改程序?提示:整數2所在的位置是第2、3字節(jié)處,整數4所在的位置是第6、7字節(jié)處,整數6所在的位置是10、11字節(jié)處,整數8所在的位置是14、15字節(jié)處,整數10所在的位置是第18、19字節(jié)處。想一想對于問題10.7,如果要讀取文件testRand再試一試問題10.8編一程序從問題10.5寫入的文件stdScore.dat中讀取一條記錄并顯示在屏幕上,要求從鍵盤輸入記錄的序號。
調試問題10.8程序,觀察運行結果再試一試問題10.8編一程序從問題10.5寫入的文件std想一想對問題10.7中找到的記錄進行修改,修改完以后再寫入原來的文件中,應如何修改程序?請根據提示寫出完整程序。提示:(1)在變量說明部分增加一個字符變量chYesNo的申明,用來存放用戶對是否進行修改的確認。(2)打開文件的方式改為可讀寫,即"rb+"。(3)在關閉文件之前,即在語句fclose(filePonter)之前按下面步驟添加程序。從鍵盤讓用戶確認是否進行修改,輸入字符’y’或‘n’存放在變量chYesNo中;若chYesNo==’y’,則表示要修改記錄,需要完成下面操作。從鍵盤輸入一條學生記錄數據并存放在結構體變量stTemp中;定位文件指針到第iRecordID條記錄的開始處;將結構體變量stTemp中寫入文件;若chYesNo==’n’,則不對記錄進行修改。
想一想對問題10.7中找到的記錄進行修改,修改完以后再寫入原練一練問題:編一程序在文件stdScore.dat(問題10.5已寫入數據)的末尾添加一條新記錄,然后將文件中所有記錄顯示出來。這條新記錄為學生Lisa的成績,具體如下:
Name Number Math EnglishChinese Lisa 1006 89 93 75練一練問題:編一程序在文件stdScore.dat(問題10問題與討論怎樣實現隨機文件讀寫?問題與討論怎樣實現隨機文件讀寫?學生容易錯的地方打開文件進行寫之后,沒有將文件位置指針指回文件文件定位fseek函數的使用學生容易錯的地方打開文件進行寫之后,沒有將文件位置指針指回文小結1.在實際應用中,若對某一文件進行多次讀寫操作后,需要重新讀寫該文件,使用rewind函數可以在不關閉文件的情況下將位置指針返回文件開頭,達到重新讀取文件的目的。2.使用定位當前位置指針函數ftell可獲取當前文件指針的位置。注意,該函數限于二進制文件,對文本文件往往會出錯。3.使用函數feof可對文本文件和二進制文件進行文件是否結束的判斷。小結1.在實際應用中,若對某一文件進行多次讀寫操作后,需要重第10章文件及其應用第10章文件及其應用主要內容文本文件的讀寫二進制文件的讀寫文件的定位與隨機讀寫主要內容文本文件的讀寫文本文件的讀寫
應知:-文件的分類-文本文件讀寫的步驟-文本文件讀寫函數的功能及函數參數的含義應會:
-文本文件的打開、讀寫、關閉-將單個字符、字符串進行文件讀寫,進行文件復制等程序的編寫難點:-文件的讀寫文本文件的讀寫應知:英文詞匯File文件Read讀Write寫B(tài)uffer緩沖區(qū)英文詞匯File文件提問指針變量的數據類型如何確定?指針變量作為函數參數時,值或地址傳遞?創(chuàng)建鏈表的算法?提問知識回顧:線性鏈表簡單敘述輸出鏈表所有結點的數據域(遍歷)的算法思路定義一個結點類型的指針變量current作為循環(huán)變量,并賦初始值為pHead,指向鏈表頭結點.輸出current所指向結點的數據.將current指向下一個結點.循環(huán)結束條件是current=NULL.知識回顧:線性鏈表簡單敘述輸出鏈表所有結點的數據域(遍歷)的學一學:文件基礎知識對文件的操作只有讀和寫兩種,通常情況下,將內存中的數據寫入到文件,稱為文件的輸出;將文件中的數據讀入到內存稱為文件的輸入。C語言中,以緩沖文件系統(tǒng)方式讀寫文件的步驟為①定義文件指針;
②打開文件;③讀寫文件;④關閉文件。學一學:文件基礎知識對文件的操作只有讀和寫兩種,通常情況下,學一學1.定義文件指針一般形式為:
FILE*fp;其中fp就是所定義文件指針。FILE類型以及所有的文件讀寫函數和相關常量都定義在文件stdio.h中,在源程序的開頭要包含頭文件stdio.h。學一學1.定義文件指針
學一學2.打開文件
C語言中,使用fopen函數來打開文件。fopen函數的調用形式:fopen(chFileName,mode);以mode方式打開文件chFileName。其中,參數chFileName是將要讀寫文件的文件名,mode為文件的操作方式。若文件打開成功,返回一個文件指針,若打開失敗,則返回空值NULL,NULL在stdio.h中被定義為0。文件操作方式mode是一個整數,其取值及含義如表10-1所示。
學一學2.打開文件學一學
學一學學一學3.文件的讀寫通過函數進行。文本文件的讀寫函數主要有fgetc和fputc,fgets和fputs,其調用形式如表10-2所示。表10-2中的EOF是文件結束標志,定義在文件stdio.h中,其值為-1,可用來判斷文本文件是否結束。學一學3.文件的讀寫通過函數進行。文本文件的讀寫函數主要有學一學4.關閉文件
C語言使用fclose函數關閉文件。關閉文件就是使原來指向該文件的文件指針與文件脫離,fclose的調用形式為:
fclose(fp);
關閉文件指針fp所指的文件。若文件關閉成功,返回值為NULL,否則,返回一個非0值,表示關閉文件時出錯。學一學4.關閉文件試一試問題10.1編一程序從鍵盤輸入一串字符“mayfriendshipforever!”,然后保存在文件myInfo.txt中。調試問題10.1程序,觀察運行結果試一試問題10.1編一程序從鍵盤輸入一串字符“mayfri想一想問題10.1用fputs函數實現應如何修改程序?請根據提示寫出完整程序。提示:(1)刪除語句inti;(2)可將語句i=0;while(chInfo[i]!='\0'){fputc(chInfo[i],fp);i++;}改為:fputs(chInfo,fp);想一想問題10.1用fputs函數實現應如何修改程序?請試一試問題10.2:打開問題10.1生成的文件myInfo.txt,將其中的內容顯示在屏幕上,要求文件名從命令行參數輸入?!窘忸}步驟】1.定義文件指針fp;2.定義字符變量用來存放從文件中讀取的字符;3.以讀文本文件方式打開文件(文件名由命令行參數輸入);4.如果打開文件失敗,則輸出錯誤信息并結束程序;5.讀取文件中的內容并顯示在屏幕上;6.關閉文件。試一試問題10.2:打開問題10.1生成的文件myInfo想一想
問題10.2用fgets函數實現應如何修改程序?請根據提示寫出完整程序。提示:(1)語句charch;改為char*chInfo;
(2)語句ch=fgetc(fp);while(ch!=EOF){putchar(ch);ch=fgetc(fp);}
改為:fgets(chInfo,100,fp);printf("%s",chInfo);注意,fgets函數中的第2個參數為要讀取的字符數,要大于或等于文件的長度+1。想一想問題10.2用fgets函數實現應如何修改程序練一練問題:編一程序實現文件的拷貝,將文件myInfo.txt拷貝到文件myBak.txt。要求源文件名和目標文件名都在程序運行時通過鍵盤輸入,可將其存放在兩個字符數組中,然后再在打開文件時使用。練一練問題與討論什么是緩沖文件系統(tǒng),有什么優(yōu)點?二進制文件和文本文件各有什么優(yōu)缺點?問題與討論什么是緩沖文件系統(tǒng),有什么優(yōu)點?學生容易錯的地方文件操作完畢后不關閉文件;文件打開時沒有賦給一個文件指針。
學生容易錯的地方文件操作完畢后不關閉文件;小結:1.文件的存儲形式。數據在內存中以二進制形式存放,當把內存中的數據輸出到磁盤文件中時可以用兩種形式存儲,即字符形式或二進制形式。2.在C語言中,系統(tǒng)定義了一個文件類型FILE,用來實現緩沖文件系統(tǒng)方式下文件的讀寫操作,文件指針就是一個FILE類型的指針變量,由此實現文件的具體讀寫。3.其它讀寫函數。C語言提供了多種以緩沖文件系統(tǒng)方式讀寫文本文件的函數,在ANSIC中,還有格式化讀寫函數fprintf和fscanf可用來讀寫文本文件。小結:1.文件的存儲形式。數據在內存中以二進制形式存放,當把二進制文件的讀寫
應知:-二進制文件讀寫的步驟-二進制文件讀寫函數的功能及函數參數的含義應會:
-二進制文件的打開、讀寫、關閉-對數據塊進行操作難點:
-對數據塊進行讀寫二進制文件的讀寫應知:英文詞匯File文件Binary二進制英文詞匯File提問什么是緩沖文件系統(tǒng),有什么優(yōu)點?二進制文件和文本文件各有什么優(yōu)缺點?提問知識回顧:文本文件簡單敘述文件操作四步驟定義文件指針
.打開文件
.讀寫文件
.關閉文件
.知識回顧:文本文件簡單敘述文件操作四步驟學一學:二進制文件的讀寫對于二進制文件,以緩沖文件系統(tǒng)方式讀寫文件的步驟同樣為以下四個步驟:
①定義文件指針;②打開文件;③讀寫文件;④關閉文件。其中定義文件指針、打開文件和關閉文件的操作在上一節(jié)中已介紹過,這里主要學習用來讀寫二進制文件的兩個函數fread和fwrite。學一學:二進制文件的讀寫對于二進制文件,以緩沖文件系統(tǒng)方式讀學一學塊寫入函數fwrite的調用形式為:
fwrite(buffer,size,n,fp)將buffer開始處的n個大小為size字節(jié)的數據塊(記錄)寫入到文件指針fp所指向的文件中。成功返回數據塊(記錄)個數n,不成功返回0。塊讀取函數fread的調用形式為:
fread(buffer,size,n,fp)從文件指針fp所指向的文件中讀取n個大小為size個字節(jié)的數據塊(記錄)到buffer所指向的地址空間。成功返回數據塊(記錄)個數n,出錯或遇文件結束返回0。學一學塊寫入函數fwrite的調用形式為:試一試問題10.3編一程序從鍵盤輸入5個整數并寫入到文件test.dat中。
調試問題10.3程序,觀察運行結果試一試問題10.3編一程序從鍵盤輸入5個整數并寫入到文件t想一想將問題10.3中的5個整數改為5個實數寫入文件testFloat.dat中應如何修改程序?想一想將問題10.3中的5個整數改為5個實數寫入文件test試一試問題10.4編一程序從問題10.3寫入的文件test.dat中讀取數據并顯示在屏幕上。
【解題步驟】1.定義整型數組iArray用來存放5個整數;2.定義整型變量i作為循環(huán)變量;3.定義文件指針fp;4.以讀二進制文件方式打開文件test.dat;5.如果打開文件失敗,則輸出錯誤信息并結束程序;6.從文件中讀取5個整數并存放在數組iArray中;7.顯示數組iArray中的元素;8.關閉文件。試一試問題10.4編一程序從問題10.3寫入的文件test想一想文件testFloat.dat中存有5個實數,請讀取并顯示出來,應如何實現?想一想文件testFloat.dat中存有5個實數,請讀取并試一試問題10.5編一程序從鍵盤輸入5個學生的成績記錄并寫入到文件stdScore.dat中。5個學生的成績記錄見表10-3。試一試問題10.5編一程序從鍵盤輸入5個學生的成績記錄并寫調試問題10.5程序,觀察運行結果調試問題10.5程序,觀察運行結果想一想問題10.5的寫文件操作是每次寫入一個學生的信息,循環(huán)5次,如果不使用循環(huán)語句而一次性地將5個學生數據寫入文件,應該怎樣實現?想一想問題10.5的寫文件操作是每次寫入一個學生的信息,循環(huán)試一試問題10.6編一程序將問題10.5所寫的文件stdScore.dat中的數據顯示在屏幕上。【解題步驟】
1.定義學生成績結構體類型type_score;2.定義結構體類型type_scor數組stScore[5]用來存放從文件中讀取的信息;3.定義文件指針fp;4.定義整型變量i作為循環(huán)變量;5.以讀二進制文件方式打開文件stdScore.dat;6.如果打開文件失敗,則輸出錯誤信息并結束程序;7.逐條讀取文件中的記錄存放在結構體數組stScore中8.關閉文件;9.顯示結構體數組stScore中的數據。試一試問題10.6編一程序將問題10.5所寫的文件stdS想一想問題10.6的讀取文件操作是每次讀出一個學生的信息,循環(huán)5次,如果不使用循環(huán)語句而一次性地讀出5個學生的數據,程序怎樣更改?想一想練一練問題:編一程序從文件stdScore.dat(問題10.5已寫入數據)中將姓名、學號和數學成績3個字段的數據保存在文件stdMath.dat中。練一練問題與討論為什么使用數據塊讀寫函數?EOF是否可以用來檢測二進制文件的結束?怎樣檢測二進制文件的結束?問題與討論為什么使用數據塊讀寫函數?學生容易錯的地方對不存在的文件進行讀操作;操作方式不熟悉。
學生容易錯的地方對不存在的文件進行讀操作;小結1.使用fread和fwrite函數可以方便地讀寫任意類型的數據,比如int型、float型、char型等基本類型以及結構體類型的數據。2.使用fwrite函數寫入數據的文件是二進制文件。小結1.使用fread和fwrite函數可以方便地讀寫任意類文件的定位與隨機讀寫
應知:-以緩沖文件系統(tǒng)方式隨機讀寫文件的步驟-指定文件位置值的含義應會:
-文件讀寫指針位置的重置-文件讀寫指針位置的隨機定位
難點:
-文件讀寫指針位置的隨機定位
文件的定位與隨機讀寫應知:英文詞匯Rewind重置Seek定位英文詞匯Rewind提問fputc()函數與fputs()函數的區(qū)別是什么?fgetc()函數與fgets()函數的區(qū)別是什么?
提問學一學:文件的定位與隨機讀寫文件中有一個位置指針,指向當前讀寫的位置。當順序讀寫一個文件時,每讀寫完一個一個數據單位(一個字符,或一個整數,或一個結構體變量)后,位置指針自動移向下一個數據單位位置,如果想改變這種順序,就需要強制使位置指針指向指定的位置。以緩沖文件系統(tǒng)方式隨機讀寫文件的步驟為①定義文件指針;②打開文件;③文件的定位;④讀寫文件;⑤關閉文件。文件的定位可以通過重置位置指針函數rewind和隨機定位函數fseek來實現。學一學:文件的定位與隨機讀寫文件中有一個位置指針,指向當前讀學一學1.重置位置指針函數rewind的調用形式:
rewind(fp);使文件的讀寫位置指針重新移到文件的開頭。其中fp指向正在讀寫的文件。該函數沒有返回值。2.隨機定位函數fseek的調用形式:
fseek(fp,lOffset,iOrigin)將文件指針fp所指文件的位置指針移到指定的位置,該位置與iOrigin所代表的文件位置相距l(xiāng)Offset個字
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度新型城鎮(zhèn)化建設項目房地產測繪業(yè)務全權委托合同2篇
- 2024年度文化產業(yè)品牌管理人才聘用合同樣本3篇
- 2024年標準版技術保密合作合同書版
- 2024版建筑工程質量檢測承包合同3篇
- 2024年定制版房產交易獨家協(xié)議版B版
- 2024版房產買賣合同及相關稅費說明3篇
- 2024年標準建筑工程項目協(xié)議模板與索賠指南版B版
- 2024年度企業(yè)員工招聘面試流程優(yōu)化與改進服務合同3篇
- 2024年度智能家居燈具安裝及售后保障合同3篇
- 2024年度商標轉讓及品牌連鎖加盟推廣合同范本3篇
- 江蘇南京鼓樓區(qū)2023-2024九年級上學期期末語文試卷及答案
- 河南汽車工廠48萬臺乘用車發(fā)動機建設項目竣工環(huán)境保護驗收監(jiān)測報告
- 2023-2024學年四川省成都市金牛區(qū)八年級(上)期末數學試卷
- 德邦物流-第三方物流服務
- 混凝土冬季施工保溫保濕措施
- 心電監(jiān)護技術
- 2024年華潤電力投資有限公司招聘筆試參考題庫含答案解析
- 壟斷行為的定義與判斷準則
- 模具開發(fā)FMEA失效模式分析
- 聶榮臻將軍:中國人民解放軍的奠基人之一
- 材料化學專業(yè)大學生職業(yè)生涯規(guī)劃書
評論
0/150
提交評論