




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
C語言程序設計教程第10章12024/3/26目錄文件操作基礎順序讀寫文件隨機讀寫文件錯誤處理與文件保護文件操作綜合應用實例本章小結與練習題22024/3/26文件操作基礎0132024/3/26文件是存儲在外部介質上的數據集合,通常以文件名進行標識。文件概念根據數據的組織形式和處理方式,文件可分為文本文件和二進制文件。文件分類文件概念及分類42024/3/26文件指針與文件操作函數文件指針在C語言中,文件操作通過文件指針進行,它是一個指向文件的指針變量,用于訪問文件中的數據。文件操作函數C語言提供了一系列文件操作函數,如fopen、fclose、fread、fwrite等,用于實現文件的打開、關閉、讀寫等操作。52024/3/26使用fopen函數打開文件,需要指定文件名和打開模式(如讀取模式、寫入模式等)。使用fclose函數關閉文件,釋放相關資源。在文件使用完畢后,應及時關閉文件以避免資源泄漏。文件打開與關閉文件關閉文件打開62024/3/26順序讀寫文件0272024/3/26從指定的文件流中讀取一個字符。fgetc從標準輸入流`stdin`中讀取一個字符。getchar將指定的字符寫入到指定的文件流中。fputc將指定的字符寫入到標準輸出流`stdout`中。putchar字符讀寫函數82024/3/2601020304從指定的文件流中讀取一行字符串。fgets將指定的字符串寫入到指定的文件流中。fputs從標準輸入流`stdin`中讀取一行字符串(該函數已被棄用,建議使用`fgets`)。gets將指定的字符串寫入到標準輸出流`stdout`中,并在末尾自動添加換行符。puts字符串讀寫函數92024/3/26fread從指定的文件流中讀取指定大小的數據塊。fwrite將指定的數據塊寫入到指定的文件流中。read從文件描述符中讀取指定大小的數據塊(需要包含頭文件`<unistd.h>`)。write將指定的數據塊寫入到文件描述符中(需要包含頭文件`<unistd.h>`)。數據塊讀寫函數102024/3/26隨機讀寫文件03112024/3/26fseek()函數用于在文件中定位到指定位置。其函數原型為`intfseek(FILE*stream,longoffset,intwhence);`,其中`stream`為文件指針,`offset`為偏移量,`whence`指定起始位置(`SEEK_SET`表示文件開頭,`SEEK_CUR`表示當前位置,`SEEK_END`表示文件末尾)。用于返回當前文件位置指針。其函數原型為`longftell(FILE*stream);`,返回值為當前文件位置指針相對于文件開頭的偏移量。用于將文件位置指針重置到文件開頭。其函數原型為`voidrewind(FILE*stream);`。ftell()函數rewind()函數定位文件位置函數122024/3/26隨機讀寫函數應用示例fread()函數:用于從文件中讀取數據。其函數原型為size_tfread(void*ptr,size_tsize,size_tcount,FILE*stream);,其中ptr為指向存儲數據的緩沖區的指針,size為要讀取的每個數據項的大小(以字節為單位),count為要讀取的數據項的數量,stream為文件指針。fwrite()函數:用于向文件中寫入數據。其函數原型為size_tfwrite(constvoid*ptr,size_tsize,size_tcount,FILE*stream);,其中參數含義與fread()函數相同。fgetc()和fputc()函數:分別用于從文件中讀取一個字符和向文件中寫入一個字符。其函數原型分別為intfgetc(FILE*stream);和intfputc(intc,FILE*stream);。fgets()和fputs()函數:分別用于從文件中讀取一行字符串和向文件中寫入一行字符串。其函數原型分別為char*fgets(char*str,intn,FILE*stream);和intfputs(constchar*str,FILE*stream);。132024/3/26錯誤處理與文件保護04142024/3/26010203這類錯誤在編譯時就能被發現,如拼寫錯誤、缺少分號等。處理方法通常是仔細閱讀編譯器給出的錯誤信息,定位并修正錯誤。語法錯誤這類錯誤在程序運行時發生,如空指針引用、數組越界等。處理方法包括使用調試工具定位錯誤,以及通過異常處理機制捕獲并處理錯誤。運行時錯誤這類錯誤通常是由于算法設計或邏輯判斷錯誤導致的,編譯器和運行時系統都無法檢測。處理方法是通過仔細分析和測試程序,找出并修正邏輯錯誤。邏輯錯誤錯誤類型及處理方法152024/3/26文件保護機制簡介文件訪問權限通過設置文件的訪問權限,可以控制哪些用戶或程序可以讀取、寫入或執行文件。這是保護文件不被未經授權訪問的有效手段。文件加密對重要文件進行加密,可以確保即使文件被非法獲取,也無法輕易解密和訪問文件內容。文件備份與恢復定期備份文件可以在文件損壞或丟失時及時恢復,減少損失。同時,備份文件也可以用于歷史版本回溯和數據分析等場景。文件審計與監控通過對文件的訪問和使用進行審計和監控,可以及時發現和處理未經授權的訪問和惡意修改行為,保障文件安全。162024/3/26文件操作綜合應用實例05172024/3/26系統功能需求01學生信息管理系統需要實現學生信息的錄入、查詢、修改和刪除等功能。數據結構設計02采用結構體數組來存儲學生信息,每個學生信息包括學號、姓名、性別、年齡、成績等字段。文件操作規劃03使用文件來保存學生信息,實現數據的持久化存儲。在程序啟動時,從文件中讀取數據到內存中,程序關閉時,將內存中的數據寫回到文件中。學生信息管理系統設計思路182024/3/26學生信息結構體定義關鍵代碼實現及解析192024/3/2601```c02typedefstruct{03charid[20];關鍵代碼實現及解析202024/3/26charname[50];chargender;關鍵代碼實現及解析212024/3/26intage;}Student;floatscore;關鍵代碼實現及解析222024/3/26```從文件中讀取學生信息關鍵代碼實現及解析232024/3/26關鍵代碼實現及解析01```c02voidloadStudents(Studentstudents[],int*count){FILE*fp=fopen("students.txt","r");03242024/3/26if(fp==NULL){關鍵代碼實現及解析252024/3/26關鍵代碼實現及解析*count=0;262024/3/26關鍵代碼實現及解析272024/3/26VS}while(fscanf(fp,"%s%s%c%d%f",students[*count].id,students[*count].name,&students[*count].gender,&students[*count].age,&students[*count].score)!=EOF){關鍵代碼實現及解析282024/3/26關鍵代碼實現及解析(*count);292024/3/26關鍵代碼實現及解析}fclose(fp);302024/3/26關鍵代碼實現及解析010203```將學生信息寫入文件}312024/3/2603FILE*fp=fopen("students.txt","w");01```c02voidsaveStudents(Studentstudents[],intcount){關鍵代碼實現及解析322024/3/26if(fp==NULL){關鍵代碼實現及解析332024/3/26return;關鍵代碼實現及解析342024/3/26關鍵代碼實現及解析}for(inti=0;i<count;i){fprintf(fp,"%s%s%c%d%fn",students[i].id,students[i].name,students[i].gender,students[i].age,students[i].score);352024/3/26}fclose(fp);關鍵代碼實現及解析362024/3/26}```關鍵代碼實現及解析372024/3/26本章小結與練習題06382024/3/26文件I/O函數如`fopen()`,`fclose()`,`fscanf()`,`fprintf()`,`fgets()`,`fputs()`等函數的使用方法和注意事項。文件操作包括文件的打開、關閉、讀取、寫入等基本操作,以及文件指針的使用。文件定位通過`fseek()`,`rewind()`,`ftell()`等函數實現文件內部的定位。二進制文件操作與文本文件的區別,以及如何使用`fread()`和`fwrite()`函數進行二進制文件的讀寫。錯誤處理如何檢測和處理文件操作中的錯誤,例如使用`ferror()`和`clearerr()`函數。本章知識點回顧392024/3/261.題目編寫一個程序,從鍵盤輸入一段文本,并將其保存到一個文件中。要點一要點二答案解析首先需要使用`fopen()`函數以寫入模式打開一個文件,然后使用`fgets()`或`scanf()`函數從鍵盤讀取輸入,并使用`fputs()`或`fprintf()`函數將輸入的內容寫入到文件中,最后使用`fclose()`函數關閉文件。練習題及答案解析402024/3/26練習題及答案解析編寫一個程序,讀取一個文本文件的內容,并將其輸出到屏幕上。2.題目首先需要使用`fopen()`函數以讀取模式打開一個文件,然后使用`fgets()`或`fscanf()`函數從文件中讀取內容,并使用`printf()`函數將讀取的內容輸出到屏幕上,最后使用`fclose()`函數關閉文件。答案解析412024/3/26編寫一個程序,實現兩個二進制文件的合并。首先需要使用`fopen()`函數以讀取模式打開兩個二進制文件,以寫入模式打開一個新的二進制文件。然后使用`fread()`函數從兩個文件中讀取內容,并使用`fwrite()`函數將讀取的內容寫入到新文件中。最后使用`fclose()`函數關閉所有文件。3.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版租賃住宅合同
- 2024年隴南市市屬事業單位考試真題
- 二年級上冊數學教案-總復習3|北師大版
- 2024年合肥長豐縣水湖鎮招聘城市管理執法輔助人員真題
- 2024年甘肅人力資源服務股份有限公司招聘真題
- 農村建房安裝合同范本
- 廢除的設計合同范本
- 地理西亞第1課時課件-2024-2025學年七年級地理下學期(人教版2024)
- 修理電機勞務合同范本
- 藝術班轉讓合同范本
- 企業集團文件與檔案管理制度
- 2024福建漳州市九龍江集團有限公司招聘10人筆試參考題庫附帶答案詳解
- 公安審訊技巧課件
- 西方教育史考題及答案
- 軟件開發java筆試題及答案
- 小學綜合實踐三年級下冊巧手工藝坊教學課件
- 2025年紹興職業技術學院單招職業適應性測試題庫帶答案
- DB61T 5113-2024 建筑施工全鋼附著式升降腳手架安全技術規程
- 店鋪轉讓合同店鋪轉讓合同電子版5篇
- 公共衛生應急管理體系建設的調研報告
- 2025年揚州工業職業技術學院單招職業傾向性測試題庫完美版
評論
0/150
提交評論