二、檔案型別指標
儲存在外存上面的資料的集合
外存:磁碟等
記憶體:特點是斷電不保護
即資料的傳輸過程
標準輸入裝置:鍵盤
標準輸出裝置:顯示器
這兩個裝置也是檔案,並且常開
檔名唯一:絕對路徑
檔案包括:
一般說的是相對路徑重名
注:windows本身不區分大小寫,所以檔名大小寫容易
作用:高效的管理檔案
windows系統下的:ntfs、fat、fat32等
網路檔案系統:nfs等
linux系統下的:ext2、ext3等
(文字檔案用到的)
(1)指系統自動地在記憶體區為程式中每乙個正在使用的檔案開闢乙個檔案緩衝區
(2)從記憶體向磁碟輸出資料,必須先送到記憶體中的緩衝區,裝滿緩衝區後才一起送到磁碟去;
如果從磁碟讀入資料,則一次從磁碟檔案將一批資料輸入到記憶體緩衝區(充滿緩衝區),然後再從緩衝區逐個的將資料送出
(3)從記憶體向磁碟輸出資料
(4)從磁碟向計算機輸出資料
(1)每個被使用的檔案都在記憶體中開闢乙個相應的檔案資訊區,用來存放檔案的有關資訊;
(2)這些資訊被儲存在乙個結構體變數中;
(3)該結構體型別是由系統宣告的,取名為file
(1)檔案的開啟函式fopen()
問題1:檔案開啟失敗,
int
main()
執行結果
改正:
int
main()
(2)檔案的寫入函式fwrite()——向檔案中寫入乙個資料塊
原型:fwrite(buf,size,count,fp);
buf為指標型別,所讀檔案中的資料所存放的位置;
size為一次讀取的位元組數;count為進行讀操作的次數;
fp為檔案指標,指向要進行操作的檔案
char buf=
"hello"
;fwrite
(buf,
sizeof
(char),
strlen
(buf)
, fw)
;
對於檔案資料來說,不需要有 \0,所以不需要寫為strlen(buf)+1
(3)檔案的讀取函式fread()——從檔案中讀取乙個資料塊
原型引數與寫入函式相同
file *fr =
fopen
(path,
"r")
;assert
(fr !=
null);
char buf[
100]=""
;int len =
fread
(buf,
sizeof
(char),
200, fr)
;//有可能讀取的內容沒有\0結尾,所以最好給buf初始化
printf
("%d,%s"
, len, buf)
;
(4)移動檔案位置指標fseek()(移動游標)
①fseek(檔案指標,偏移量,起始位置)
②偏移量(offset)表示指標一定的位元組數,為負表示向檔案開始方向移動,為正反之,為0不移動
偏移量的單位是位元組數,所以要乙個偏移量*sizeof(資料型別)
③起始位置
seek_set 檔案開頭(0)
seek_cur 檔案當前位置(1)
seek_end 檔案末尾(2)
file *fr =
fopen
(path,
"r")
;assert
(fr !=
null);
char buf[
100]=""
;int len =
fread
(buf,
sizeof
(char),
200, fr)
;printf
("%d,%s\n"
, len, buf)
;//移動檔案位置指標
fseek
(fr,
-len*
sizeof
(char),
seek_cur);
//從檔案當前位置向檔案其實方向移動-len個位元組(包含有\0)
char buf2[
100]=""
;int len2 =
fread
(buf2,
sizeof
(char),
200, fr)
;printf
("%d,%s\n"
, len2, buf2)
;
C語言之檔案操作
fseek 函式 int fseek file stream,long offset,int whence 功能分析 第乙個引數為檔案指標,第二個引數表示偏移量,第三個引數表示從什麼地方開始偏移 返回值為0 表示成功,1表示失敗 whence的數值 seek set 檔案的起始位置 0 seek c...
C語言之檔案操作
file fopen const char path,const char mode 功能 開啟檔案 path 檔案的路徑 mode 檔案開啟的方式,以字串形式提供 r 以唯讀方式開啟檔案,如果檔案不存在則開啟失敗,返回值為空。r 在 r 的基礎上增加寫許可權。w 以只寫方式開啟檔案,如果檔案不存在...
C語言之標頭檔案的匯入
首先,對於很多萌新程式設計者,把所有函式的聲名以及定義,全部放入乙個cpp檔案是比較常見的。而匯入標頭檔案的方式,可以區別出函式的主體和它所呼叫的其他函式,使程式更加規範。下面我就來講講標頭檔案的使用,以及一些注意點。1.標頭檔案的簡單應用 首先我們建立乙個簡單的c語言函式,並且匯入我們自己寫的標頭...