繁忙的考試月終於過去了,終於能專心來學點東西了。
在c語言期末考試的時候發現了c語言我還遺漏了乙個重要的知識點——c語言的檔案訪問沒有學習,現在來補一下。
c語言對檔案的訪問是通過檔案指標來進行。檔案的指標不是指向一段記憶體空間,而是指向描述有關這個檔案的相關資訊的乙個檔案資訊結構體,該結構體定義在studio.h標頭檔案中。我們在訪問檔案的過程中不會用到關於檔案指標的具體內容,所以也不必深究。
//宣告檔案指標
file* 變數名;
對乙個檔案的訪問首先要開啟乙個檔案
file* pfile =
fopen
("要開啟的檔名(帶字尾)"
,"開啟方式"
);
既然開啟了,那在程式中必然要包含把檔案關閉的步驟才算是安全的操作
fclose
(pfile)
;//pfile是要關閉的檔案的指標,有int型的返回值。關閉成功返回0
幾種開啟檔案的方式
開啟方式描述r
read,唯讀的開啟方式
wwrite,只寫的方式開啟,檔案不存在時創造檔案,檔案存在時會先清除原有內容
a以追加的方式開啟文字,檔案不存在時創造檔案,檔案存在時會在原檔案之後新增操作的內容
rb唯讀方式開啟二進位制檔案,檔案不存在時出錯
wb只寫方式開啟二進位制檔案,建立新檔案,原檔案內容丟失
ab追加方式開啟二進位制檔案,檔案不存在時建立新檔案,檔案存在時在原檔案之後新增
文字模式下的換行是\n,二進位制檔案模式下換行是\r\n.
(windows系統下,在linux系統仍是\n)
int fread(目標存放位址,一次讀取的位元組數a,讀取次數b,讀取的檔案指標);//一共需要讀取a*b個位元組,讀取成功返回值為非零。
迴圈讀取字元的時候要注意清零,否則上一次的讀取仍然會列印出來str[i]=0;
#define _crt_secure_no_deprecate
#include
#include
intmain
(void);
fread
(str,
sizeof
(char),
2, pfile)
;printf
(str)
;fclose
(pfile)
;return0;
}
寫入成功返回位址
size_t fwrite
(寫入內容的存放位址,寫入資料大小,寫入資料次數,檔案指標)
;
#define _crt_secure_no_deprecate
#include
#include
intmain
(void
)
結構體的儲存方式是將定義好的結構體乙個位元組乙個位元組地搬運到檔案中,在用同樣的方法搬運到新的位址。結構體的寫入和讀出會有記憶體補齊的步驟,所以在檔案中檢視時會出現亂碼,但是用程式讀的時候是正常的。
#define _crt_secure_no_deprecate
#include
#include
struct node
;int
main
(void);
struct node no1;
file* pfile =
fopen
("name.txt"
,"w");
fwrite
(&no,
sizeof
(no),1
, pfile)
;fread
(&no1,
sizeof
(no),1
, pfile)
;fclose
(pfile)
;return0;
}
這兩個函式同樣是用於檔案的讀寫,但是這兩個函式是按行讀入(寫入)字串。
int
fputs
(const
char
* str,file* pfile)
;//成功返回0,失敗返回-1
char
*fgets
(const
char
* str,
int n,file* pfile)
;
fgets函式從檔案中讀取n個字元,但實際上讀取到的只有n-1個字元,還有乙個』\0』。如果在讀完n-1個字元之前遇到換行符「\n」或檔案結束符號eof,讀入結束。若函式讀取錯誤,返回值為null。
#define _crt_secure_no_deprecate
#include
#include
intmain
(void
)
fprintf
(檔案指標,格式字元,輸出佇列);
fscanf
(檔案指標,格式字元,輸入佇列);
讀取檔案中的字串時是用空格隔開,否則不能讀出兩個字元陣列。或者讀字元的時候將剩下的所有字元(數字)都當做乙個變數存入乙個字串中。
#define _crt_secure_no_deprecate
#include
#include
intmain
(void
)
用rewind函式使檔案的位置標記指向檔案開頭(沒有返回值),同時飛飛函式的值會恢復為0.
rewind
(檔案指標);
fseek函式改變檔案位置標記
fseek
(檔案指標,位移量,起始點);
fseek
(fp,
100l,0
);//將檔案位置標誌向前移到離檔案開頭100個位元組處
fseek
(fp,
50l,1)
;//將檔案位置標誌向前移到離當前位置50個位元組處
fseek
(fp,
-10l,2
);///將檔案位置標誌向後移到離當前位置10個位元組處
行結尾是\n。文結尾feof(檔案指標);
到結尾了返回1,沒到結尾返回0
ferror函式。
呼叫各種輸出輸入函式時都會生成乙個新的ferror函式值,因此在每乙個函式呼叫之後都有立即檢查ferror函式值。在執行fopen函式時,ferror函式初值自動置零。
ferror
(fp)
;
chearerr
將ferror的出錯標誌清零。即ferror函式為乙個非零值,,立即呼叫clearerr(fp)讓函式值變為0,以便下次檢測。
文字模式下的換行是\n
二進位制檔案模式下的換行是\r\n(windows系統下,在linux系統仍是\n)
size_t 是unsigned int型,包含在stddf.h標頭檔案中
你想成為市場調查高手嗎
目錄如下 一 我們的企業 二 市場研究基本知識 1 為什麼要進行市場調研 2 市場調研的方法 1 定性研究和定量研究的比較 2 定量研究的基本型別 a 入戶訪問 b 街頭攔截訪問 c 調查 d 神秘顧客訪問 e 網路調查 f 郵寄調查 g 日記式 記帳式調查 3 定性研究的主要型別 a 座談會 b ...
想成為注塑模具設計高手 這個你一定要懂
模具設計注意事項 塑件形狀及壁厚設計特別應考慮有利於料流暢通填充型腔,盡量避免尖角 缺口。脫模斜度應取大,含玻璃纖維15 的可取1 2 含玻璃纖維30 的可取 2 3 當不允許有脫模斜度時則應避免強行脫模,宜採用橫向分型結構。澆注系統截面宜大,流程平直而短,以利於纖維均勻分散。設計進料口應考慮防止填...
python怎麼成為高手 如何成為Python高手
這篇文章主要是對我收集的一些文章的摘要。因為已經有很多比我有才華的人寫出了大量關於如何成為優秀python程式設計師的好文章。我的總結主要集中在四個基本題目上 函式式程式設計,效能,測試,編碼規範。如果乙個程式設計師能將這四個方面的內容知識都吸收消化,那他 她不管怎樣都會有巨大的收穫。函式式程式設計...