歡迎關注個人主頁:逸狼
創造不易,可以點點贊嗎~
如有錯誤,歡迎指出~
文件
為了數據持久化保存,使用文件,否則數據存儲在內存中,程序退出,內存回收,數據就會丟失。
程序設計中,文件分兩種:程序文件、數據文件
文件名
唯一的文件標識,包含3部分:文件路徑+文件名主干+文件后綴? (例:c:\code\test.txt? )
文本文件和二進制文件
文本文件是數據以ASCII字符的形式存儲的文件
二進制文件是數據在內存中以二進制的形式存儲的文件
字符?律以ASCII形式存儲,數值型數據既可以?ASCII形式存儲,也可以使??進制形式存儲。
如有整數10000,如果以ASCII碼的形式輸出到磁盤,則磁盤中占?5個字節(每個字符?個字節),? ?進制形式輸出,則在磁盤上只占4個字節
測試代碼
#include<stdio.h>
int main()
{int a = 10000; FILE* pf = fopen("test.txt", "wb");fwrite(&a, 4, 1, pf);//以二進制的形式寫入文件fclose(pf);pf = NULL;return 0;
}
流
我們程序的數據需要輸出到各種外部設備,也需要從外部設備獲取數據,不同的外部設備的輸?輸出操作各不相同,為了?便程序員對各種設備進??便的操作,我們抽象出了流的概念,我們可以把流想象成流淌著字符的河。
C程序針對?件、畫?、鍵盤等的數據輸?輸出操作都是通過流操作的。
?般情況下,我們要想向流?寫數據,或者從流中讀取數據,都是要打開流,然后操作。
標準流
C語?程序在啟動的時候,默認打開了3個流:
- stdin 標準輸?流,在?多數的環境中從鍵盤輸?,scanf函數就是從標準輸?流中讀取數據。
- stdout 標準輸出流,?多數的環境中輸出?顯?器界?,printf函數就是將信息輸出到標準輸出流中。
- stderr 標準錯誤流,?多數環境中輸出到顯?器界?。
這是默認打開了這三個流,我們使?scanf、printf等函數就可以直接進?輸?輸出操作的。
stdin、stdout、stderr 三個流的類型是: FILE * ,通常稱為?件指針。
C語?中,就是通過 FILE * 的?件指針來維護流的各種操作的。
文件指針
每個被使?的?件都在內存中開辟了?個相應的?件信息區,?來存放?件的相關信息(如?件的名 字,?件狀態及?件當前的位置等)。這些信息是保存在?個結構體變量中的。該結構體類型是由系統聲明的,取名FILE.(不需要關注文件內部細節)
每當打開?個?件的時候,系統會根據?件的情況?動創建?個FILE結構的變量,并填充其中的信 息,使?者不必關?細節
文件的打開和關閉
?件在讀寫之前應該先打開?件,在使?結束之后應該關閉?件。
在編寫程序的時候,在打開?件的同時,都會返回?個FILE* 的指針變量指向該?件,建立了指針和?件的關系。
ANSIC規定使? fopen 函數來打開?件, fclose 來關閉?件。
fopen打開文件
fclose關閉文件
代碼操作
用只讀形式,沒有創建文件
絕對路徑
比如我想在桌面上創建一個文件
相對路徑
- . 表示當前目錄
- . . 表示上一級路徑
- ?沒寫 . 表示默認當前路徑