C C POSIX 的一些 IO 操作

2021-08-16 12:46:52 字數 2055 閱讀 2478

對檔案的操作,讀檔案至記憶體,從記憶體寫至檔案

// 讀檔案至記憶體buf中

void fread()

// 將記憶體 buf 中的內容寫入開啟的檔案 fp 中

void fwrite()

// 將fp 換為 stdin 輸入至 buf 中

void fscanf()

// c++ 檔案流,輸入至記憶體中,由於流遇到空格等空白符停止所以需迴圈將流中的內容全部輸入至

// 記憶體(string)中,直至返回 eof

void ifstream()

// fp 換為 stdout, buf 中的內容寫入至 fp 中

void fprintf()

void ofstream()

字元流的操作,記憶體至記憶體

// 檔案流 stdio 換為 str, 格式化輸入

void sscanf()

// istringstream 物件 iss 繫結 buf,作為輸入流輸入至 word(string)

void istringstream()

// 與 sscanf() 類似, 格式化輸出

void sprintf()

// 與 istringstream 類似

void ostringstream()

linux 有無緩衝的 io操作 (參考 unp)

// 無緩衝, 普通的 read() write() 並不難保證完成所需要傳送的字元數

ssize_t rio_readn(int fd, void *usrbuf, size_t n)

else

if (nread == 0)

break; // eof

nleft -= nread;

bufp += nread;

}return (n - nleft);

}// not buff read

ssize_t rio_writen(int fd, void *usrbuf, size_t n)

nleft -= nwritten;

bufp += nwritten;

}return n;

}// io 緩衝區結構體

typedef

struct rio_t;

// 與 read() 語義相同

// 如果緩衝區為空會通過呼叫 read() 填滿它

static ssize_t rio_read(rio_t *rp, char *usrbuf, size_t n)

else

if (rp->rio_cnt == 0) else

}// copy min(n, rp->cnt) bytes from internal buf to user buf

cnt = n;

if (rp->rio_cnt < n)

cnt = rp->rio_cnt;

memmove(usrbuf, rp->rio_bufptr, cnt);

rp->rio_bufptr += cnt;

rp->rio_cnt -= cnt;

return cnt;

}

// c

printf() -- stdout scanf() -- stdin

fprintf() -- file* fscanf() -- file*

sprintf() -- char* sscanf() -- str

// c++ 與上類似, 都具有緩衝區

ostream istream

ofstream ifstream

ostringstream

istringstream

I O的一些簡單操作

i o 流 stream 是供資料傳輸的通道 位元組流 通用的 inputstream 父類 fileinputstream outputstream 父類 fileoutputstream 操作流的步驟 a 產生位元組流物件 b 呼叫讀寫方法 c 關閉流 2.publicvoidcopyimage...

IO流的一些常見流物件操作

1 列印流 printwriter 列印流printwriter 構造引數可以接受的型別 file物件 file 字串路徑 string 位元組輸出流 ouputstream 字元輸出流 writer public class printwriterdemo01 流關閉 bufferedreader...

IO庫的一些知識

標準io庫型別和標頭檔案 iostream 對流進行讀寫 fstream 對檔案進行讀寫 sstream 對string物件進行讀寫 一.io物件不可複製或賦值 eg ofstream out1,out2 out1 out2 error cannot assign stream objects pr...