一.i/o緩衝
c標準庫提供了操作檔案的標準i/o函式庫,與系統呼叫相比,主要差別是實現了乙個跨平台的使用者態緩衝的解決方案。
1. i/o緩衝的解釋(以printf()為例)
printf函式向標準輸出寫入多個字元,所寫入的字元被放在乙個使用者態的緩衝區中,直到碰到乙個換行符,系統才呼叫write函式將緩衝區中的資料寫入標準輸出,也就是說,在換行符之前寫入的字元並不會立即出現在控制台螢幕上。
系統呼叫要請求核心的服務,會引發cpu模式的切換,期間會有大量的堆疊資料儲存操作,開銷比較大。如果頻繁的進行系統呼叫,會降低應用程式的執行效率。
有了緩衝機制以後,多個讀寫操作可以合併為一次系統呼叫,減少了系統呼叫的次數,將大大提高程式的執行效率。
標準i/o函式並不直接操作檔案描述符,而是使用檔案指標。檔案指標指向的資料型別是file型。
二.fopen
1.作用
用於開啟乙個標準 i/o 流
2.使用
file *fopen(const char *path, const char *mode);
第乙個引數:檔名
第二個引數:開啟方式
r"或"rb":以唯讀方式開啟。
「w"或"wb」:以只寫方式開啟,並把檔案長度截短為零。
「a"或"ab」:以寫方式開啟,新內容追加在檔案尾。
"r+"或"rb+「或"r+b」:以更新方式開啟(讀和寫)。
"w+"或"wb+「或"w+b」:以更新方式開啟,並把檔案長度截短為零。
"a+"或"ab+「或"a+b」:以更新方式開啟,新內容追加在檔案尾
注意:字母 b 表示檔案是乙個二進位制檔案而不是乙個文字檔案。
3.返回值
成功返回:乙個非空的file* 指標,失敗返回null
三.fread
1.作用
用於從乙個檔案流裡讀取資料
2.使用
size_t fread(void *ptr, size_t size, size_t nmemb, file *stream);
第乙個引數:資料緩衝區
第二個引數:每個資料記錄的長度
第三個引數:要傳輸的記錄個數
第四個引數:檔案指標
3.返回值
成功讀到資料緩衝區裡的記錄個數
四.fwrite
1.作用
從指定的資料緩衝區裡取出資料記錄,並把它們寫到輸出流中。
2.使用
size_t fwrite(const void *ptr, size_t size, size_t nmemb, file *stream);
3.返回值
成功寫入的記錄個數
五. fclose
1.作用
函式用於關閉指定的檔案流。
2.使用
int fclose(file *fp);
六.fflush
1.作用
用於把檔案流裡所有未寫出的資料立即寫出
2.使用
int fflush(file *stream);
七.fseek
1.作用
用於在檔案流裡為下一次讀寫操作指定位置。
2.使用
int fseek(file *stream, long offset, int whence);
3.返回值
返回乙個整數:0表示成功,-1表示失敗
C 標準庫函式
有許多不同的案件中,陣列排序的可能是有用的。演算法 如搜尋看看一些存在於乙個陣列 通常可以變得更簡單和 或更有效時,輸入的資料進行排序。此外,排序是非常有用的可讀性,如當列印列表按字母順序排列的名字。排序通常是通過反覆比較的陣列元素對進行的,和交換他們如果他們滿足一些標準。為了在這些元素進行比較根據...
C 標準庫函式
c 程式通常可以呼叫標準c 庫中的大量函式。這些函式完成一些基本的服務,如輸入和輸出等,同時也為一些經常使用的操作提供了高效的 實現 這些函式中含有大量的函式和類定義,以幫助程式設計師更好地使用標準c 庫。標準c 庫包含以下內容 和 標準c 庫的詳細訊息均在其對應的標頭檔案進行了說明。主要標準c 庫...
strcpy c標準庫函式
c語言標準庫函式strcpy,把從src位址開始且含有null結束符的字串複製到以dest開始的位址空間。已知strcpy函式的原型是 char strcpy char dst,const char src 實現strcpy函式 解釋為什麼要返回char 假如考慮dst和src記憶體重疊的情況,st...