|13 檔案資料讀寫.

Slides:



Advertisements
Similar presentations
第一單元 建立java 程式.
Advertisements

計算機程式語言實習課.
雷 霆 战 机 By—谷恩轩&余万全.
C程序设计 第10章 文 件 主讲教师: 鲁 萍 西安建筑科技大学 理学院.
File Access 井民全製作.
第9章 例外與檔案處理 9-4 檔案與資料夾處理 9-5 Java的輸入/輸出串流 9-6 檔案的讀取與寫入.
第13章 檔案與資料夾處理 13-1 System.IO類別的基礎 13-2 檔案與資料夾操作 13-3 文字檔案的讀寫
複習 struct score_Type{ int chinese,english; }; struct my_Type{
程式設計概論 1.1 程式設計概論 程式語言的演進 物件導向程式 程式開發流程 1.2 C++開發工具
C File System.
Speaker: Wen-Ching Lo Date: 2009/12/23
Java 的例外與輸入出檔案處理 Jing Ming Huang.
计算概论 第二十一讲 文件操作 北京大学信息学院.
Chapter 8 檔案.
第12章 伺服器的檔案處理 12-1 System.IO類別的基礎 12-2 檔案與資料夾操作 12-3 文字檔案的寫入
第十一章 檔案(File).
JAVA 程式設計與資料結構 第六章 輸出與輸入.
101北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
第10章 文件操作.
第十一章 文件 文件概述 文件操作 文件操作实例 本章小结 作业: 练习:
第10章 文件操作.
C 程式設計— 檔案處理 台大資訊工程學系 資訊系統訓練班.
SQL Stored Procedure SQL 預存程序.
安裝JDK 安裝Eclipse Eclipse 中文化
Methods 靜宜大學資工系 蔡奇偉副教授 ©2011.
第十二章 文件 12.1 C文件概述 文件:存储在外部介质上数据的集合,是操作系统数据管理的单位 文件分类 按文件的逻辑结构: 按存储介质:
Echo Server/Client Speaker:Fang.
fp=fopen("CD2.dat","wb"); fwrite(&min,8,1,fp); fclose(fp);
程式設計 博碩文化出版發行.
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab2.
檔案與磁碟的基本介紹.
作業系統實習課(四) -檔案管理- 實驗室:720A 助教:鄧執中.
File(檔案處理) 學習目標:開檔、讀檔、更新檔與關閉檔案.
THE C PROGRAMMING LANGUAGE
Java 程式設計 講師:FrankLin.
第10章 檔案與資料夾處理 10-1 C語言的檔案輸入與輸出 10-2 文字檔案的讀寫 10-3 二進位檔案的讀寫
第10章 檔案與資料夾處理 10-1 檔案的基礎 10-2 文字檔案的讀寫 10-3 二進位檔案的讀寫 10-4 檔案與資料夾處理.
Linux 文件操作——系统调用和标准 IO 库
Chap3 Linked List 鏈結串列.
第5章 文件.
第9章 文件操作 文件 使用文件的目的 操作系统管理数据的基本单位 存储在外存储器上的数据的集合
短除法 雪狼頭目.
研讨课4 文件操作.
第一單元 建立java 程式.
一、文件的基本概念 第十三章 文 件 所谓“文件”是指一组相关数据的有序集合。 这个数据集有一
網路安全管理報告 緩衝區溢位攻擊 學生:吳忠祐 指導教授:梁明章.
輸入&輸出 函數 P20~P21.
第一次Labview就上手 參考書籍: LabVIEW for Everyone (Jeffrey Travis/Jim Kring)
挑戰C++程式語言 ──第8章 進一步談字元與字串
VS.NET 2003 IDE.
SOCKET( ).
C標準輸出入函數庫 與 作業系統.
引用檔案.
C qsort.
File Input and Output Chap. 11: 施威銘的書 Chap. 7: K&R.
本节内容 文件读写 视频提供:昆山爱达人信息技术有限公司.
Video 影像 (VideoPlayer 影像播放器、Camcorder 錄影機) 靜宜大學資管系 楊子青
挑戰C++程式語言 ──第7章 輸入與輸出.
Chapter 15 檔案存取 LabVIEW中的檔案存取函數也可將程式中的資料儲存成Excel或Word檔。只要將欲存取的檔案路徑位址透過LabVIEW中的路徑元件告訴檔案存取函數後,LabVIEW便可將資料存成Excel或Word檔;當然也可以將Excel或Word檔的資料讀入LabVIEW的程式中。
北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
第13章 文 件.
C 程式設計— 檔案處理 台大資訊工程學系 資訊系統訓練班.
資料表示方法 資料儲存單位.
第七章 文件 7.1 文件的基本概念 7.2 文件类型指针 7.3 文件的打开与关闭 7.4 文件的读/写 7.5 文件的随机读/写
作業系統實習課(二) -Scheduler-Related System Calls-
開發Java程式語言的工具 JDK.
2018 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A Lab2.
C语言程序设计 第13章 文件操作.
Unix指令4-文字編輯與程式撰寫.
InputStreamReader Console Scanner
Presentation transcript:

|13 檔案資料讀寫

|檔案與儲存的資料 C 語言的原始程式碼檔案是一種純文字檔。 以 .c 命名,儲存原始程式碼的內容文字。 13.1 檔案與資料 |檔案與儲存的資料 C 語言的原始程式碼檔案是一種純文字檔。 以 .c 命名,儲存原始程式碼的內容文字。 將副檔名調整為 .txt ,也可以透過文字編輯器開啟。 |  開啟檔案 >>

13.1 檔案與資料 |開啟檔案 << 檔案與儲存的資料    檔案讀寫 >>

13.1 檔案與資料 |檔案讀寫 << 開啟檔案    檔案處理函數 >>

13.2 檔案處理函數 |檔案處理函數 << 檔案讀寫    fopen() >>

|fopen() FILE *fopen(const char* ,const char*) 13.3 檔案操作 13.3.1 開啟檔案 << 檔案處理函數    fopen() >>

|fopen() FILE *fopen(const char* ,const char*) 13.3 檔案操作 |fopen() 13.3.1 開啟檔案 FILE *fopen(const char* ,const char*) fopen 以 「*」 標示,是一個指標,表示回傳值是一個位址 透過回傳的指標取得此開啟的檔案,進一步對其進行存取。 第一個引數為所要開啟的檔案路徑名稱字串,例如 C:\\cexample\\myfile.txt 第 2 個引數則是檔案的開啟模式 12 11 10 9 8 7 6 5 4 3 2 1 << fopen()    範例:開啟檔案 >>

|範例:開啟檔案 找不到檔案 找到檔案 13.3 檔案操作 13.3.1 開啟檔案 4 3 2 1 << fopen()  fclose() >>

|fclose() int fclose(File *) 將不需要的關閉檔案避免資源浪費 檔案讀寫的緩衝區問題 指標變數表示所要關閉的檔案 13.3 檔案操作 |fclose() 13.3.2 關閉檔案 int fclose(File *) 12 將不需要的關閉檔案避免資源浪費 檔案讀寫的緩衝區問題 指標變數表示所要關閉的檔案 11 10 9 8 7 6 5 4 3 2 1 << 範例:開啟檔案    範例:關閉檔案>>

13.3 檔案操作 |範例:關閉檔案 13.3.2 關閉檔案 2 1 << fclose()     getc() >>

|getc() int getc(FILE *) 參數為所要讀取的檔案指標 針對此檔案讀取檔案中目前位置的下一個字元 13.4 檔案讀取 13.4.1 讀取單一字元 int getc(FILE *) 參數為所要讀取的檔案指標 針對此檔案讀取檔案中目前位置的下一個字元 << 範例:關閉檔案    範例:讀取檔案內容 >>

|範例:讀取檔案內容 G 13.4 檔案讀取 13.4.1 讀取單一字元 4 3 2 1 << getc()  範例:迴圈讀取檔案內容 >>

|範例:迴圈讀取檔案內容 G O O D NIGHT AND GOOD LUCK 13.4 檔案讀取 13.4.1 讀取單一字元 6 12 5 11 4 10 3 9 2 8 1 7 G O O D NIGHT AND GOOD LUCK << 範例:讀取檔案內容    逐字元讀取 >>

|逐字元讀取 13.4 檔案讀取 13.4.1 讀取單一字元 << 範例:迴圈讀取檔案內容 << 範例:迴圈讀取檔案內容    範例:迴圈讀取檔案內容 >>

|範例:迴圈讀取檔案內容 …,32,76,85,67,75,-1 printf("%d,",c) ; 13.4 檔案讀取 13.4.1 讀取單一字元 printf("%d,",c) ; …,32,76,85,67,75,-1 2 1 << 逐字元讀取    範例:讀取指定數量字元的檔案內容 >>

|範例:讀取指定數量字元的檔案內容 13.4 檔案讀取 13.4.2 讀取字串 3 2 1 << 範例:迴圈讀取檔案內容 << 範例:迴圈讀取檔案內容    printf() >>

|printf() int putc(int c, FILE *fp); 第 1 個引數為寫入檔案的字元 第 2 個引數為寫入檔案的位址指標 13.5 檔案寫入 |printf() 13.5.1 寫入單一字元 int putc(int c, FILE *fp); 第 1 個引數為寫入檔案的字元 第 2 個引數為寫入檔案的位址指標 回傳寫入的字元,如果寫入失敗,則回傳 EOF 。 << 範例:讀取指定數量字元的檔案內容    範例:寫入單一字元 >>

|範例:寫入單一字元 13.5 檔案寫入 13.5.1 寫入單一字元 12 11 10 9 8 7 6 5 4 3 2 1 << printf()    範例:寫入單一字元 >>

|範例:寫入單一字元 13.5 檔案寫入 13.5.1 寫入單一字元 2 1 << 範例:寫入單一字元 << 範例:寫入單一字元    範例:寫入單一字元 >>

|範例:寫入單一字元 13.5 檔案寫入 13.5.1 寫入單一字元 FILE *of = fopen("C:\\hello.txt","a") ; 4 3 2 1 << 範例:寫入單一字元    範例:寫入字元陣列 >>

|範例:寫入字元陣列 13.5 檔案寫入 13.5.1 寫入單一字元 3 2 1 << 範例:寫入單一字元 << 範例:寫入單一字元    fputs() >>

|fputs() 第 1 個參數是字串,它會被寫入 fp 指標位址所指向的檔案 寫入的動作發生失敗,則會回傳 EOF 13.5 檔案寫入 |fputs() 13.5.2 寫入字串 int fputs(const char *s,FILE * fp); 第 1 個參數是字串,它會被寫入 fp 指標位址所指向的檔案 寫入的動作發生失敗,則會回傳 EOF << 範例:寫入字元陣列    範例:寫入字串 >>

13.5 檔案寫入 |範例:寫入字串 13.5.2 寫入字串 3 2 1 << fputs()    範例:檔案複製 >>

|範例:檔案複製 13.6 複製檔案 GOOD NIGHT AND GOOD LUCK 4 3 2 1 << 範例:寫入字串 << 範例:寫入字串    檔案關閉與緩衝區 >>

|檔案關閉與緩衝區 /* c = fclose(of) ; */ 程式在寫入檔案完成之後,不會自動關閉檔案 指定的字元並沒有寫入檔案 13.7 緩衝區 |檔案關閉與緩衝區 /* c = fclose(of) ; */ 程式在寫入檔案完成之後,不會自動關閉檔案 指定的字元並沒有寫入檔案 << 範例:檔案複製    無緩衝區讀寫 >>

|無緩衝區讀寫 13.8 無緩衝區資料讀寫 13.8.1 無緩衝區檔案讀寫函數 << 檔案關閉與緩衝區 << 檔案關閉與緩衝區    open() >>

|open() 第 1 個參數為所要開啟的檔案 第 2 個參數是開啟的模式 13.8 無緩衝區資料讀寫 |open() 13.8.2 開啟與關閉檔案 int open(const char *fpath,int openm [,int rwm]) ; 第 1 個參數為所要開啟的檔案 第 2 個參數是開啟的模式 第 3 個參數則是檔案的存取屬性,這個參數是選擇性的,只有在第 2 個參數是特定值情形下才有效果 3 2 1 << 無緩衝區讀寫    開啟常數合併 >>

|開啟常數合併 O_WRONLY | O_CREAT | O_APPEND 13.8 無緩衝區資料讀寫 13.8.2 開啟與關閉檔案 << open()    範例:開啟檔案 >>

|範例:開啟檔案 13.8 無緩衝區資料讀寫 13.8.2 開啟與關閉檔案 3 2 1 << 開啟常數合併 << 開啟常數合併    close() >>

|close() int close(int handle) ; 參數 handle 是所要關閉的檔案 也就是成功開啟檔案時所回傳的值 13.8 無緩衝區資料讀寫 |close() 13.8.2 開啟與關閉檔案 int close(int handle) ; 參數 handle 是所要關閉的檔案 也就是成功開啟檔案時所回傳的值 << 開啟檔案    範例:開啟與關閉檔案 >>

|範例:開啟與關閉檔案 開啟檔案代號:3 檔案順利關閉 13.8 無緩衝區資料讀寫 13.8.2 開啟與關閉檔案 5 4 3 2 1 << close()    read() 與 write() >>

|read() 與 write() int read(int handle,char *buf,unsigned int count); 13.8 無緩衝區資料讀寫 |read() 與 write() 13.8.3 讀寫檔案 int read(int handle,char *buf,unsigned int count); 第 1 個參數 handle 為成功開啟檔案之後所回傳的檔案編號 第 2 個參數 buf 儲存所讀取的資料 第 3 個參數為所要讀取的位元組數目 回傳值如果是 -1 表示資料讀取失敗,否則表示 read() 實際讀取的位元組數目 int write(int handle,char *buf, unsigned int count); 第 1 個參數如上述,在這裡是指所要寫入的目標檔 案,接下來的 buf 則是要寫入檔案的內容 第 3 個參數則是所要寫入的位元組數目,回傳值則是實際寫入的位元組,如果是 -1 ,表示寫入失敗 << 範例:開啟與關閉檔案    範例:開啟複製 >>

|範例:開啟複製 13.8 無緩衝區資料讀寫 13.8.3 讀寫檔案 << read() 與 write()  fread() 與 fwrite() >>

|fread() 與 fwrite() 13.9 二進位格式檔案讀寫 13.9.1 fread() 與 fwrite() << 範例:開啟複製    fopen() 與 fwrite() >>

|fopen() 與 fwrite() FILE *of = fopen("hellobin.bin","rb") ; 13.9 二進位格式檔案讀寫 |fopen() 與 fwrite() 13.9.1 fread() 與 fwrite() FILE *of = fopen("hellobin.bin","rb") ; 第 2 個參數指定了 rb ,因此會以二進位格式開啟 hellobin.bin ,以支援檔案讀取作業。 size_t fwrite(const void *pt, size_t size, size_t nmemb, FILE *fp); 第 1 個參數 pt 是要寫入檔案的資料位址指標 第 2 個參數 size 為每一次所要寫入的資料單位 第 3 個參數則是可能讀取的最大值 最後一個參數 fp 為資料讀取的來源檔案 回傳值代表成功寫入的元素數量,這個值會與第 3 個參數相同,除非 遇到寫入的錯誤。 << fread() 與 fwrite()     範例:寫入二進位格式檔案 >>

|範例:寫入二進位格式檔 總共寫入 3 個 int 13.9 二進位格式檔案讀寫 13.9.1 fread() 與 fwrite() 4 3 2 1 << fopen() 與 fwrite()     fread() 與 fwite() >>

|fread() 與 fwrite() 寫入一般型態: int x = 100 ; 13.9 二進位格式檔案讀寫 |fread() 與 fwrite() 13.9.1 fread() 與 fwrite() 寫入一般型態: int x = 100 ; fwrite(&x,sizeof(int),1,of) ; 第 1 行是一個 int 型態的整數值 第 2 行將其寫入指定的目標檔案,其中的第一個參數必須指定為 &x 。 size_t fread(void * restrict pt, size_t size, size_t nmemb, FILE * restrict fp); 執行檔案的讀取動作,回傳值代表成功讀取的元素數量 << 範例:寫入二進位格式檔    範例:讀取二進位格式檔 >>

|範例:讀取二進位格式檔 總共讀取 3 個 int 100 200 300 13.9 二進位格式檔案讀寫 13.9.1 fread() 與 fwrite() 總共讀取 3 個 int 100 200 300 7 6 5 4 3 2 1 << fread() 與 fwrite()     open() >>

|open() open(filepath, O_WRONLY|O_CREAT|O_BINARY,S_IWRITE) ; 13.9 二進位格式檔案讀寫 |open() 13.9.2 無緩衝區的檔案讀寫 open(filepath, O_WRONLY|O_CREAT|O_BINARY,S_IWRITE) ; 第 2 個參數指定了 O_BINARY ,如此一來就會以二進位格式的方式讀寫檔案。 << 範例:讀取二進位格式檔    範例:二進位檔案讀寫 >>

|範例:二維位檔案讀寫 寫入位元組:12 讀取位元組:12 讀取內容: 444 666 888 13.9 二進位格式檔案讀寫 13.9.2 無緩衝區的檔案讀寫 寫入位元組:12 讀取位元組:12 讀取內容: 444 666 888 4 3 2 1 << open()     |