關於c檔案而言,筆者最早是接觸在linux 下的c開發,linux的檔案系統比較複雜,而linux是乙個「檔案系統」的系統,怎麼說呢?就在是linux系統中都是檔案,所有的都可以把它當做檔案來處理。
c檔案概述
1:作業系統是如何處理的?
其實所謂的「檔案」一般指儲存在外部介質上資料的集合。一批資料是以檔案的形式存放在外部介質(比如磁碟)上的。
作業系統是以檔案為單位對資料進行管理。也就是說如果想找到外部介質上的資料,必須先按檔名找到所指定的檔案,然後從檔案中讀取資料。而要想往外部介質上儲存資料也必須先建立乙個檔案,才能向他輸出資料。
2:檔案的資料組織形式
c語言中把檔案看做乙個字元(位元組)序列,即由乙個乙個字元(位元組)的資料順序。
按組織順序分為ascii檔案和二進位制檔案。
ascii檔案:又稱之為文字檔案,它的每個位元組放乙個ascii碼,代表乙個字元
二進位制檔案:二進位制檔案把記憶體中的資料按其在記憶體中的儲存樣式原樣輸出到磁碟上存放。
(補充:關於ascii碼中關於數字和字母的記憶:大寫字母:65~90,小寫字母:97~122,數字:80~89)
3:檔案的輸入輸出
乙個c檔案是乙個位元組流或者二進位製流,它把資料看做是一連串的字元(位元組),而不考慮記錄的界限
換句話說:c語言中檔案並不是由記錄組成,在c語言中對檔案的訪問是以字元為單位的。輸入輸出資料流的開始和結束僅受程式控制而不受物理符號控制。也就是說,在輸出時不會自動增加回車換行符以作為記錄結束的標誌,輸入時不以回車換行符作為記錄的間隔。把這種檔案稱之為流式檔案。
4:檔案處理方法
在過去使用的c版本有兩種對檔案的處理方法:
"緩衝檔案系統":系統自動地在記憶體區為每乙個正在使用的檔案開闢乙個緩衝區。從記憶體向磁碟輸出資料必須先送到記憶體中的緩衝區,裝滿緩衝區後才一起送到磁碟去。如果從磁碟向記憶體中讀入資料,則一次從磁碟檔案將一批資料輸入到記憶體緩衝區,然後再從緩衝區逐個地將資料送到程式資料區。
"非緩衝檔案系統":指系統不自動確定大小的緩衝區,而由程式為每個檔案設定緩衝區。
在unix系統下,用緩衝檔案系統處理文字檔案,用非緩衝檔案系統處理二進位制檔案
在c語言中,沒有輸入輸出語句,對檔案的讀寫都是通過庫函式來實現的。ansi規定了標準輸入輸出函式,用它們來對檔案進行讀寫。
檔案指標
每個被使用的檔案都在記憶體中開闢了乙個區,用來存放檔案的有關資訊(如檔案名字、檔案狀態以及檔案當前位置等)這些資訊是儲存在乙個結構體變數中的。
該結構體型別由系統定義,取名為file。
檔案型別宣告:
typedef struct
file;
可以定義檔案型指標變數:
file *fp;
可以使fp指向某乙個檔案的結構體變數,從而通過該結構體變數中的檔案資訊能夠訪問該檔案。
也可以定義file型別的陣列
file f[5];定義乙個結構體陣列,他有5個元素,可以用來存放5個檔案的資訊
學習筆記 檔案系統
硬連線 硬連線不可以跨檔案系統。ln 原始檔 連線名 軟連線軟連線檔案和原始檔是兩個不同的檔案,軟連線是可以跨檔案系統,軟連線裡面存放的只是員檔案的路徑。ln s 原始檔 連線名 ln s tmp file cpfile lrwxrwxrwx.1 root root 14 apr 1 15 10 c...
Linux學習筆記一Linux檔案系統
linux檔案系統 root 存放root使用者相關檔案 home 存放普通使用者的相關檔案 bin 存放普通命令檔案的目錄 sbin 具有一定權才能使用的命令的目錄 mnt 掛載軟碟機,光碟機的地方 etc 存放配置檔案的地方 var 經常變化的資料 boot 引導性檔案 srv 檔案安裝存放的位...
ROS學習筆記(一)ROS檔案系統
ros檔案系統 catkin workspace 從上到下依次為 1 檔案系統級 2 綜合功能包 3 功能包 4 功能包清單 訊息 服務 其他 主要檔案 其餘常見檔案 初始化工作空間 mkdir p catkin ws src cd catkin ws catkin make ls 或者 tree ...