C程式设计—档案处理

上传人:gb****c 文档编号:243038724 上传时间:2024-09-14 格式:PPT 页数:22 大小:51KB
返回 下载 相关 举报
C程式设计—档案处理_第1页
第1页 / 共22页
C程式设计—档案处理_第2页
第2页 / 共22页
C程式设计—档案处理_第3页
第3页 / 共22页
点击查看更多>>
资源描述
按一下以編輯母片標題樣式,按一下以編輯母片,第二層,第三層,第四層,第五層,*,C 程式設計檔案處理,台大資訊工程學系,資訊系統訓練班,1,課程大綱,C語言簡介,基本資料型態, 變數, 基本輸入輸出,控制敘述- 選擇控制與重覆控制,陣列,函式,指標,字元與字串,結構,檔案處理,2,本次課程大綱,C語言的檔案處理,檔案類型,開檔與關檔,檔案I/O函式,隨機式存取,二進位檔的存取,3,C語言的檔案觀念,C語言將資料都看成由一連串字元組成的資料流(stream).,標準檔案I/O函數在fopen()開啟一個檔案後,C語言會要求作業系統在主記憶體保留一塊空間做為檔案I/O的缓衝區.所有檔案I/O動作則是對這塊缓衝區做字元的讀取跟寫入,直到檔案被關閉後fclose(),檔案的內容才會真正寫回儲存設備.,4,檔案類型,文字檔:,方便閱讀,但較無保密性。其他使用者也可以透過純文字編輯器開啟並成功閱讀。,二進位檔:,I/O速度較快並具有保密性,但檔案內容需透過程式轉譯才能閱讀。二進位檔的資料是由一連串的位元組(Byte)所組合,通常使用在某些特殊用途(例如圖檔),5,文字資料與二元資料,文字資料流以字串形成儲存在檔案中,以n做為換行字元,以Z做為EOF,二元資料流與記憶體相同格式來儲存在檔案中,6,檔案的開啟跟關閉,fopen()跟fclose(),對某個檔案進行讀取寫入的動作前,一定要先開啟檔案,當將資料處理完成後,還要關閉檔案,我們稱之為缓衝式的I/O處理,其功能在增進檔案處理效率,因而無須時時讀取磁碟機.,7,FILE,FILE是在stdio.h中宣告的結構體,主要用於存放I/O stream在主記憶體的位址.,FILE能記錄下一個讀取或寫入字元目前位於stream的位址,檔案讀寫狀況,及檔案讀寫是否有錯誤發生.,8,fopen(),FILE *fopen (char , char mode);,代表要開啟的檔案名稱.,mode代表要對檔案處理的模式.,若開啟檔案有誤,則回傳NULL。,9,fopen()開啟檔案的模式,Mode 功能說明,“r”,開啟一個只能讀取資料的檔案,“w”,建立用來寫入資料的檔案,若檔案存在,其內容會被覆蓋,“a”,將新的資料加在檔尾;若檔案不存在,則另建新檔,“+”,提供可寫可讀的功能,但不能單獨存在,以上,4,種模式可以混合使用,例如,“,rw,” “,ra,” “r+”,代表文字資料流的話要加,”,t”,內定是文字模式,代表二元資料流的話要加,”,b”,10,fclose(),int *fclose(FILE *fp);,當回傳值為-1時,代表關閉檔案時發生錯誤。當回傳值等於0,則表示成功關閉檔案,例子,: 嘗試開啟檔案跟關閉檔案.,11,I/O函式,C語言的檔案I/O處理功能是由函式庫所提供的,ANSI提供一套標準檔案I/O函式,使在不同作業系統下,能有一套標準的I/O函式.,由於有標準介面,我們將無須理會不同作業系統與I/O函式的介面問題,而這也是C語言所以具有高度可攜性的原因之一.,12,字元I/O函式,fgetc()跟fputc(),int fgetc(FILE* fp);,傳回所讀取的字元, 如果是EOF則代表讀到檔案結尾.,Int *fputc(int c, FILE *fp);,傳回EOF表示寫入過程有錯誤,傳回c則表示成功寫入.,13,例子,例子1,: 輸入資料到檔案中.,例子2,: 讀取一個文字檔,並印在螢幕上.,14,字串I/O函式,char *fgets(char *str,int n, FILE *fp);,從檔案讀取一行字串,傳回NULL代表有錯誤發生或檔案結束.,int fputs(char *str, FILE *fp);,傳回-1(EOF)表示有錯誤發生.,15,格式化I/O函式,int fscanf(FILE *fp, char *format );,傳回0表示有錯誤,否則傳回成功輸出的資料數.,int fprintf(FILE *fp, char *format );,傳回0表示有錯誤,否則傳回成功輸出的資料數.,例子,: 以指定的格式輸出學生序號,姓名及英數成積到檔案.,16,隨機讀寫,int fseek(FILE *fp, long offset, int where);,傳為0代表成功,否則失敗,offset:偏移檔案指標offset個位置。,where=0, 代表檔案的起始位置,where=1, 代表目前檔案的指標位置,where=2, 代表檔案的結尾,例子,:移到檔案末端, 使用fseek()更新檔案.,17,二元資料的開啟,fopen(,rb); /* 開檔時,指定讀取binary檔案 */,fopen(,wb); /* 開檔時,指定寫入資料到binary檔案 */,fopen(,ab); /* 開檔時,指定將資料加在binary檔案的後面 */,例子,18,二元資料的讀取跟寫入(1),size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);,回傳值:實際讀取的資料筆數,size_t資料型態定義於stdio,通常是unsigned int的別名。,ptr:存放資料的緩衝區指標。,size:要讀取的資料型態大小。,nmemb:要讀取的資料筆數。,stream:一個已開啟的檔案指標,代表要讀取的檔案串流。,19,二元資料的讀取跟寫入(2),size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);,回傳值:實際寫入的資料筆數,size_t資料型態定義於stdio,通常是unsigned int的別名。,ptr:存放資料的緩衝區指標。,size:要寫入的資料型態大小。,nmemb:要寫入的資料筆數。,stream:一個已開啟的檔案指標,代表要寫入的檔案串流。,例子,20,練習時間,請將員工資料,寫入二進位檔,並讀出,21,今天學到了什麼,什麼是C語言的檔案處理,什麼是檔案類型,如何使用開檔與關檔,如何使用檔案I/O函式,如何隨機存取檔案,如何存取二進位檔,22,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!