基於流的I O操作

2021-06-03 06:37:33 字數 2033 閱讀 4752

一、對快取的操作

#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 返回由此抽象路徑名所表示的目錄中的檔案和目錄的名稱所...