一、對快取的操作
#include void setbuf(file *fp,char *buf)
void setbuffer(file *fp,char *buf,size_t size)
void setlinebuf(file *fp)
int setvbuf(file *fp,char *buf,int mode,size_t size)
用setvbuf就行了,mode _iofbf,_iolbf,_ionbf
二、流的開啟與關閉
#include file *fopen(const char *pathname, const char *type)
file *freopen(const char *pathname, const char *type,file *fp)
file *fdopen(int fd, const char *type)
fopen開啟乙個路徑名由pathname指示的檔案,fopen返回file物件的指標,失敗返回null
freopen在指定的流上fp指示,開啟指定檔案由pathname指示,流已開啟先關閉。用於將指定檔案開啟為預定義的流:標準輸入、標準輸出或標準出錯
fdopen,通常用於管道和網路通訊獲得的描述符,fdopen不會建立檔案,也不會將檔案截短為0
type型別
type值
操作檔案型別
是否新建檔案
是否清空原檔案
可讀可寫
讀寫開始位置
r文字檔案否否
是否檔案開頭
r+文字檔案是否
是是檔案開頭
w文字檔案是是
否是檔案開頭
w+文字檔案是是
是是檔案開頭
a文字檔案否是
否是檔案結尾
a+文字檔案否是
是是檔案結尾
rb二進位制檔案否否
是否檔案開頭
r+b或rb+
二進位制檔案是否
是是檔案開頭
wb二進位制檔案是是
否是檔案開頭
w+b 或 wb+
二進位制檔案是是
是是檔案開頭
ab二進位制檔案否是
否是檔案結尾
a+b 或 ab+
二進位制檔案否是
是是檔案結尾
帶a的是在檔案結尾處追加,帶b的是指二進位制檔案
三、關閉流
#include int fclose(file *fp)
返回,成功0,失敗eof,eof是定義在中的巨集,值為-1
本地關閉無需檢查,網路呼叫需要檢查
四、流的讀寫
1、字元的i/o
(1)字元的輸入
#include int getc(file *fp)
int fgetc(file *fp)
int getchar(void)
一次讀入乙個字元
#include int ferror(file *fp)
int feof(file *fp)
條件為真為非0,為假則為0
讀入字元出錯時,ferror為真;位於檔案尾,feof為真
file物件為流保持兩個標誌,出錯標誌和檔案結束標誌,呼叫clearerr可以清除這兩個標記
#include void clearerr(file *fp)
從流讀取後呼叫ungetc將字元返回流中
#include int ungetc(int c,file *fp)
返回,成功返回要送回流的字元的值,出錯為eof
(2)字元的輸出
#include int putc(int c,file *fp)
int fputc(int c,file *fp)
int putchar(int c)
步步LINUX C 基於流的I O操作
前一篇步步linux c系列文章介紹了檔案i o操作 這篇文章進一步介紹linux系統中的另一種輸入輸出方法。相對來說,流式i o由於其簡單以及方便性,應用範圍更為廣泛。概念與操作流程 流,類似於無儲存不可見的檔案。其中包含有特定結構體,結構體裡面是管理該流的所有資訊,如關聯檔案描述符,快取長度,快...
基於流的I O 流與緩衝
基於流的操作最終都會呼叫read或write進行操作。即流的內部封裝了這兩個系統呼叫。緩衝分如下三種 全緩衝 相應巨集 io full buf 直到緩衝區被填滿,菜呼叫系統i o函式。磁碟檔案讀寫通常是全緩衝的。行緩衝 相應巨集 io line buf 直到遇到換行符 n 才呼叫系統i o函式。標準...
IO流的操作
在計算機看來,檔案和資料夾 目錄,路徑 是一種東西。通過file類來完成對檔案的操作。其構造方法如下 file string pathname 通過將給定路徑名字串轉換成抽象路徑名來建立乙個新 file 例項。其常見方法有 string list 返回由此抽象路徑名所表示的目錄中的檔案和目錄的名稱所...