資料介紹
此PPT主要內容有介紹文件概述,文件類型指針,文件操作的相關函數,應用舉例,C文件的概念
所謂的“文件”(file)一般指:存儲在外部介質上的相關數據的集合。存放
文件的外部介質有磁帶、磁盤、光盤等外部存儲器。數據包括:數字、文字、
圖形、圖象、聲音、視頻等。在本章所講的文件是由數字和文字組成的數據文
件。
?? 以前各章中所用到的輸入輸出,都是以屏幕等(標準輸出文件指針:stdout)
為輸出設備,以鍵盤(標準輸入文件指針:stdin)為輸入設備。而程序運行有時
需要把數據存放到磁盤中,這就要用到磁盤文件。
?? C語言把文件看作是一個字符(字節)的序列,即由一個一個的字符或字節的
數據順序組成。換句話說,C語言是把每一個文件都看作是一個有序的字節流。
流是文件和程序之間的通道。一個C程序可以創建文件和對文件內容進行更
新、修改,在程序中所需的數據也可以從另一個文件中獲得。
????? 對文件的操作一般通過三個步驟完成:打開文件、讀或寫文件、關閉文件。
文件系統
在C語言中,根據操作系統對文件的處理方式的不同,把文件系統分為緩沖
文件系統和非緩沖文件系統。ANSI C標準采用緩沖文件系統。
?? 緩沖文件系統(又稱標準I/O)是指操作系統在內存中為每一個正在使用的文
件開辟一個讀寫緩沖區。從內存向磁盤輸出數據時,必須先送到內存緩沖區,
裝滿緩沖區后才一起送到磁盤去。如果從向內存讀入數據,則一次從磁盤文件
將一批數據輸入到內存緩沖區,然后再從內存緩沖區逐個地將數據送到程序數
據區(變量)。緩沖文件系統解決了高速CPU與低速外存之間的矛盾,使用它延長了外存的
使用壽命,也提高了系統的整體效率。
?? 非緩沖文件系統(又稱系統I/O)是指系統不自動開辟確定大小的內存緩沖區,
而由程序自己為每個文件設定緩沖區。
?? 標準I/O與系統I/O分別采用不同的輸入輸出函數對文件進行操作。由于ANSI
C只采用緩沖文件系統,因此本章所講的函數也只是處理標準I/O的函數。
文件分類
?? 1、從用戶角度分類
?? 從用戶的角度文件分為標準設備文件和普通磁盤文件。
?? ⑴標準設備文件:是指與主機相連的各種外部設備,如顯示器、打印機、鍵
盤等。在操作系統中,把外部設備也看作是一個文件來進行管理,把它們的輸
入、輸出等同于對磁盤文件的讀和寫。
?? 標準輸入文件指針:stdin。如果指定從stdin輸入數據,就是鍵盤輸入。
?? 標準輸出文件指針:stdout。如果指定stdout輸出數據,就是屏幕等輸出。
?? 標準錯誤輸出文件指針:stderr。標準錯誤輸出也是從屏幕終端輸出。
?? ⑵普通磁盤文件:本章所講的文件主要針對磁盤文件。
? 2、按文件的編碼方式分類
從文件的編碼方式看,C文件分為ASCII文件和二進制文件。
?? ⑴ASCII文件(也稱文本文件):ASCII文件在磁盤中存放時,每個字符對應一
個字節,用于存放對應的ASCII碼。如:整型十進制數12345,按ASCII文件存放
則需要占用5個字節。可在屏幕上顯示,但占用空間較大,讀寫操作要轉換。
?? ⑵二進制文件:是對不同的數據類型,按其實際占用內存字節數存放。即內
存的存儲形式,原樣輸出到磁盤上存放。如:整型十進制數12345,按二進制文
件存放只需要2個字節。屏幕顯示為亂碼,但占用空間小,讀寫操作效率高。
一、文件指針
要調用磁盤上的一個文件時,必須知道與該文件有關的信息。比如文件名、
文件的當前讀寫位置、文件緩沖區大小與位置、文件的操作方式等。這些信息
被C語言系統保存在一個稱作FILE的結構體中,它在stdio.h頭文件中定義內。
FILE結構體的內容為(在使用文件操作時,一般不用關心FILE內部成員信息):
typedef?? struct
{? int level;??????????????? /*緩沖區“滿”或“空”的程度*/
?? unsigned flags;?????????? /*文件狀態標志*/
?? char? fd;???????????????? /*文件描述符*/
?? unsigned char hold;?????? /*如無緩沖區不讀取字符*/
?? int? bsize;?????????????? /*緩沖區大小*/
?? unsigned char *buffer;??? /*數據緩沖區位置*/
?? unsigned char *curp;????? /*文件定位指針*/
?? unsigned istemp;????????? /*臨時文件指示器*/
?? short token;????????????? /*用于有效性檢查*/
}FILE;
文件指針(續):
有了結構體FILE類型后,可以用它來定義若干個FILE類型的變量,以便存放
若干個文件的信息。如:FILE? f[5];? 定義了一個結構體數組f,它有5個元素
可以用來存放5個文件的信息。
?? 對于每一個要操作的文件,都必須定義一個指針變量,并使它指向該文件結
構體變量,這個指針稱為文件指針。通過文件指針找到被操作文件的描述信息,
就可對它所指的文件進行各種操作。定義文件指針的一般形式為:
?????? FILE? * 指針變量標識符;
如:FILE? *fp;? 表示fp是一個指向FILE類型結構體的指針變量。可以使fp指
向某一個文件的結構體變量,從而通過該結構體變量中的文件信息能夠訪問該
文件。
?? 如果有n個文件,一般應定義n個FILE類型的指針變量,使它們分別指向n個
文件所對應的結構體變量。
如:FILE? *fp1 , *fp2 , *fp2 , *fp4; 可以處理4個文件。
??? 注意:FILE是用typedef聲明的文件信息結構體的別名,由C系統定義,用
戶只能使用,不能修改,并且FILE必須大寫。
對文件的操作一般步驟包括:打開文件、讀或寫文件、關閉文件。在C語言
中,文件操作都是由庫函數來完成的。這些庫函數包含在stdio.h頭文件中。
一、文件的打開與關閉
所謂打開文件,實際上是建立文件的各種有關信息,并使文件指針指向該文
件,以便進行其它各種操作。關閉文件則是斷開指針與文件之間的聯系,也就
禁止再對該文件進行操作。
?? 1、文件的打開(fopen函數)
?? ANSIC規定了標準輸入輸出函數庫,用fopen()函數來實現打開文件。fopen
函數的原型為:? FILE *fopen(char *filename,char *mode)
其中參數filename表示一個文件名,是用雙引號括起來的字符串,這個字符串
可以是一個合法的帶有路徑的文件名。參數mode表示對文件的操作模式,mode
的值仍需要用雙引號括起來,mode的取值及其含義詳見教材P×××的表6.1。
?? 如:FIEL *fp1; fp1=fopen(“test.c”,”r”); 表示是在當前目錄下打開文件
test.c,只允許進行“讀”操作,并使fp指向該文件。
?? 再如:FIEL *fp2; fp2=fopen(“c:\\tt\\test.exe”,”rb”); 表示打開C盤下
tt目錄中的test.exe文件,是二進制文件,只允許按二進制方式進行讀操作。
所謂的“文件”(file)一般指:存儲在外部介質上的相關數據的集合。存放
文件的外部介質有磁帶、磁盤、光盤等外部存儲器。數據包括:數字、文字、
圖形、圖象、聲音、視頻等。在本章所講的文件是由數字和文字組成的數據文
件。
?? 以前各章中所用到的輸入輸出,都是以屏幕等(標準輸出文件指針:stdout)
為輸出設備,以鍵盤(標準輸入文件指針:stdin)為輸入設備。而程序運行有時
需要把數據存放到磁盤中,這就要用到磁盤文件。
?? C語言把文件看作是一個字符(字節)的序列,即由一個一個的字符或字節的
數據順序組成。換句話說,C語言是把每一個文件都看作是一個有序的字節流。
流是文件和程序之間的通道。一個C程序可以創建文件和對文件內容進行更
新、修改,在程序中所需的數據也可以從另一個文件中獲得。
????? 對文件的操作一般通過三個步驟完成:打開文件、讀或寫文件、關閉文件。
文件系統
在C語言中,根據操作系統對文件的處理方式的不同,把文件系統分為緩沖
文件系統和非緩沖文件系統。ANSI C標準采用緩沖文件系統。
?? 緩沖文件系統(又稱標準I/O)是指操作系統在內存中為每一個正在使用的文
件開辟一個讀寫緩沖區。從內存向磁盤輸出數據時,必須先送到內存緩沖區,
裝滿緩沖區后才一起送到磁盤去。如果從向內存讀入數據,則一次從磁盤文件
將一批數據輸入到內存緩沖區,然后再從內存緩沖區逐個地將數據送到程序數
據區(變量)。緩沖文件系統解決了高速CPU與低速外存之間的矛盾,使用它延長了外存的
使用壽命,也提高了系統的整體效率。
?? 非緩沖文件系統(又稱系統I/O)是指系統不自動開辟確定大小的內存緩沖區,
而由程序自己為每個文件設定緩沖區。
?? 標準I/O與系統I/O分別采用不同的輸入輸出函數對文件進行操作。由于ANSI
C只采用緩沖文件系統,因此本章所講的函數也只是處理標準I/O的函數。
文件分類
?? 1、從用戶角度分類
?? 從用戶的角度文件分為標準設備文件和普通磁盤文件。
?? ⑴標準設備文件:是指與主機相連的各種外部設備,如顯示器、打印機、鍵
盤等。在操作系統中,把外部設備也看作是一個文件來進行管理,把它們的輸
入、輸出等同于對磁盤文件的讀和寫。
?? 標準輸入文件指針:stdin。如果指定從stdin輸入數據,就是鍵盤輸入。
?? 標準輸出文件指針:stdout。如果指定stdout輸出數據,就是屏幕等輸出。
?? 標準錯誤輸出文件指針:stderr。標準錯誤輸出也是從屏幕終端輸出。
?? ⑵普通磁盤文件:本章所講的文件主要針對磁盤文件。
? 2、按文件的編碼方式分類
從文件的編碼方式看,C文件分為ASCII文件和二進制文件。
?? ⑴ASCII文件(也稱文本文件):ASCII文件在磁盤中存放時,每個字符對應一
個字節,用于存放對應的ASCII碼。如:整型十進制數12345,按ASCII文件存放
則需要占用5個字節。可在屏幕上顯示,但占用空間較大,讀寫操作要轉換。
?? ⑵二進制文件:是對不同的數據類型,按其實際占用內存字節數存放。即內
存的存儲形式,原樣輸出到磁盤上存放。如:整型十進制數12345,按二進制文
件存放只需要2個字節。屏幕顯示為亂碼,但占用空間小,讀寫操作效率高。
一、文件指針
要調用磁盤上的一個文件時,必須知道與該文件有關的信息。比如文件名、
文件的當前讀寫位置、文件緩沖區大小與位置、文件的操作方式等。這些信息
被C語言系統保存在一個稱作FILE的結構體中,它在stdio.h頭文件中定義內。
FILE結構體的內容為(在使用文件操作時,一般不用關心FILE內部成員信息):
typedef?? struct
{? int level;??????????????? /*緩沖區“滿”或“空”的程度*/
?? unsigned flags;?????????? /*文件狀態標志*/
?? char? fd;???????????????? /*文件描述符*/
?? unsigned char hold;?????? /*如無緩沖區不讀取字符*/
?? int? bsize;?????????????? /*緩沖區大小*/
?? unsigned char *buffer;??? /*數據緩沖區位置*/
?? unsigned char *curp;????? /*文件定位指針*/
?? unsigned istemp;????????? /*臨時文件指示器*/
?? short token;????????????? /*用于有效性檢查*/
}FILE;
文件指針(續):
有了結構體FILE類型后,可以用它來定義若干個FILE類型的變量,以便存放
若干個文件的信息。如:FILE? f[5];? 定義了一個結構體數組f,它有5個元素
可以用來存放5個文件的信息。
?? 對于每一個要操作的文件,都必須定義一個指針變量,并使它指向該文件結
構體變量,這個指針稱為文件指針。通過文件指針找到被操作文件的描述信息,
就可對它所指的文件進行各種操作。定義文件指針的一般形式為:
?????? FILE? * 指針變量標識符;
如:FILE? *fp;? 表示fp是一個指向FILE類型結構體的指針變量。可以使fp指
向某一個文件的結構體變量,從而通過該結構體變量中的文件信息能夠訪問該
文件。
?? 如果有n個文件,一般應定義n個FILE類型的指針變量,使它們分別指向n個
文件所對應的結構體變量。
如:FILE? *fp1 , *fp2 , *fp2 , *fp4; 可以處理4個文件。
??? 注意:FILE是用typedef聲明的文件信息結構體的別名,由C系統定義,用
戶只能使用,不能修改,并且FILE必須大寫。
對文件的操作一般步驟包括:打開文件、讀或寫文件、關閉文件。在C語言
中,文件操作都是由庫函數來完成的。這些庫函數包含在stdio.h頭文件中。
一、文件的打開與關閉
所謂打開文件,實際上是建立文件的各種有關信息,并使文件指針指向該文
件,以便進行其它各種操作。關閉文件則是斷開指針與文件之間的聯系,也就
禁止再對該文件進行操作。
?? 1、文件的打開(fopen函數)
?? ANSIC規定了標準輸入輸出函數庫,用fopen()函數來實現打開文件。fopen
函數的原型為:? FILE *fopen(char *filename,char *mode)
其中參數filename表示一個文件名,是用雙引號括起來的字符串,這個字符串
可以是一個合法的帶有路徑的文件名。參數mode表示對文件的操作模式,mode
的值仍需要用雙引號括起來,mode的取值及其含義詳見教材P×××的表6.1。
?? 如:FIEL *fp1; fp1=fopen(“test.c”,”r”); 表示是在當前目錄下打開文件
test.c,只允許進行“讀”操作,并使fp指向該文件。
?? 再如:FIEL *fp2; fp2=fopen(“c:\\tt\\test.exe”,”rb”); 表示打開C盤下
tt目錄中的test.exe文件,是二進制文件,只允許按二進制方式進行讀操作。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- C語言程序設計(ppt版) 17次下載
- 第3章:TMS320C24x尋址方式和指令系統PPT下載 8次下載
- 磁路與鐵心線圈電路PPT課件下載 31次下載
- MATLAB在電路中的應用PPT課件下載 31次下載
- C語言編程常用的文件處理函數匯總下載 9次下載
- C語言編程文件操作函數庫匯總資源下載 13次下載
- LCD1602的C語言程序和工程文件免費下載 9次下載
- 溫度數碼管的C語言和工程文件免費下載 0次下載
- 設計四路循跡小車的C語言代碼和工程文件免費下載 37次下載
- C語言入門教程之C語言其實很簡單的PPT課件資料免費下載 11次下載
- P10的C語言測試程序和工程文件免費下載 4次下載
- 如何學習c語言?C語言學習筆記資料免費下載 66次下載
- 計算機測控系統——面向對象語言Visual Basic課件下載.PPT 0次下載
- C語言 對文件的輸入輸出 0次下載
- 計算機二級C語言快速教程PPT 0次下載
- C語言生成可執行二進制文件的具體過程 640次閱讀
- hex文件怎么能轉回去c語言 2438次閱讀
- C語言必備知識頭文件包含 2035次閱讀
- C語言代碼規范 1015次閱讀
- C 語言的頭文件路徑位置問題 6354次閱讀
- 深入探索Linux中的C語言 2015次閱讀
- C語言預處理命令是什么 2741次閱讀
- C語言語法擴展 1184次閱讀
- C語言的頭文件組織與包含原則 3544次閱讀
- 使用51單片機讀寫AT29C040的C語言程序免費下載 4812次閱讀
- 應該如何學習C語言?給學習C語言的同學幾點建議 3069次閱讀
- C語言的源代碼文件和目標文件與可執行文件的詳細介紹 8765次閱讀
- 嵌入式C語言的小技巧能夠減少不少代碼量 1606次閱讀
- C語言程序內存布局該關注哪些內容 942次閱讀
- c語言入門書籍推薦 4.9w次閱讀
下載排行
本周
- 1人形機器人電機驅動和傳感報告
- 4.27 MB | 4次下載 | 免費
- 2GD100PIX120C6SNA規格書
- 0.98 MB | 3次下載 | 免費
- 3一款入耳式耳機的仿真與分析
- 0.44 MB | 2次下載 | 免費
- 4Eurotherm TKS Temperature 用戶手冊
- 1.46 MB | 2次下載 | 免費
- 524V2A開關電源PCB資料分享
- 0.23 MB | 2次下載 | 1 積分
- 6無線系統中天線和RF元件電磁建模
- 7.48 MB | 1次下載 | 4 積分
- 7Multisim模擬電路仿真教程
- 1.93 MB | 1次下載 | 3 積分
- 8Altium Designer元件庫
- 17.11 MB | 1次下載 | 免費
本月
- 1晶體三極管的電流放大作用詳細說明
- 0.77 MB | 32次下載 | 2 積分
- 2雙極型三極管放大電路的三種基本組態的學習課件免費下載
- 4.03 MB | 25次下載 | 1 積分
- 3AIWA HS-J303 MKⅡ維修手冊
- 22.47 MB | 24次下載 | 10 積分
- 4九陽豆漿機高清原理圖
- 2.47 MB | 22次下載 | 1 積分
- 5多級放大電路的學習課件免費下載
- 1.81 MB | 21次下載 | 2 積分
- 6AIWA HS-J202/HS-J202M/HS-J800維修手冊
- 13.60 MB | 16次下載 | 10 積分
- 71875功放原理圖
- 0.04 MB | 11次下載 | 免費
- 8單電源板1875電路圖
- 0.06 MB | 10次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420063次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191382次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183338次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81585次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73814次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
評論