RIO的帶有緩衝區函式的用法

2021-06-11 19:05:58 字數 1056 閱讀 8227

假設我們編寫乙個程式來計算文字行中字元的個數, 一種方法是用read乙個乙個讀取位元組,然後傳到使用者儲存器, 檢查每個位元組來查詢換行符。 這個效率很低, 每次read都要經歷乙個系統呼叫。一種更好的辦法, 是從內部讀取一定的檔案,然後再判讀。但是程式還是有乙個bug, 可能是回車鍵在文字行儲存的問題。希望有心人幫忙指正。

#include #include #include #include #include #define rio_bufsize 8192

typedef structrio_t;

void rio_readinitb(rio_t *rp, int fd)

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

else if (rp->rio_cnt == 0)

return 0;

else

rp->rio_bufptr = rp->rio_buf; }

cnt = n;

if (rp->rio_cnt < n)

cnt = rp->rio_cnt;

printf("rp->rio_bufptr = %c", *(rp->rio_bufptr));

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

printf("test:%c\n", *usrbuf);

rp->rio_bufptr += cnt;

rp->rio_cnt -= cnt;

return cnt; }

ssize_t rio_readlineb(rio_t *rp, char *usrbuf, size_t maxlen)

if (c == ' ')

printf("space ..\n");

}else if (rc == 0)

}else

return -1;

bufp--;

} *bufp = 0;

return n;

}int main(void)

帶有緩衝區的流 Buffer

readerline 方法 public static void main string args throws ioexception br.close 關閉只需要關閉最外層的包裝流 裝飾者模式 轉換流 inputstreamreader public static void main strin...

帶有緩衝區的字元輸入流

帶有緩衝區的字元輸入流 使用這個流的時候,不需要自定義char陣列,或者不用定義byte陣列,自帶緩衝 當乙個流的構造方法中,需要乙個流的時候,這個被傳進來的流叫做節點流,外部負責包裝的流,叫做包裝流,或者處理流。建立物件時 bufferedreader的構造方法特殊,要接受乙個reader型別的引...

php 緩衝區,PHP的輸出緩衝區

1 什麼是緩衝區?緩衝區的作用是把輸入或者輸出的內容先放進記憶體,而不顯示或者讀取,最本質的作用就是協調高速cpu和相對緩慢的io裝置 磁碟等 的運作。2 php在執行的時候,在什麼地方有用到緩衝區?當執行php的時候,如果碰到了echo print r之類的會輸出資料的 php就會將要輸出的資料放...