淺析C標準I/O庫
1: void streaming_property(FILE* file)<!--CRLF-->
2: {
<!--CRLF-->
3:
<!--CRLF-->
4: if(file->_flags & _IO_UNBUFFERED)<!--CRLF-->
5: printf("unbuffered/n");<!--CRLF-->
6: else if(file->_flags & _IO_LINE_BUF)
7: printf("line-buffered/n");<!--CRLF-->
8: else<!--CRLF-->
9: printf("fully-buffered/n");<!--CRLF-->
10:
<!--CRLF-->
11: printf("buffer size is %d/n", file->_IO_buf_end -<!--CRLF-->
12:<!--CRLF-->file->_IO_buf_base);
13:
<!--CRLF-->
14: printf("discriptor is %d/n/n", fileno(file));<!--CRLF-->
15: }
<!--CRLF-->
16:
<!--CRLF-->
17:
<!--CRLF-->
18: int main(int argc, char** argv)<!--CRLF-->
19:<!--CRLF-->{
20: printf("stdin is ");<!--CRLF-->
21: streaming_property(stdin);
<!--CRLF-->
22:
<!--CRLF-->
23: cout << "Change BUF" << endl << endl;<!--CRLF-->
24:
<!--CRLF-->
25: //修改stdin為全緩衝區,緩衝區大小為1024<!--CRLF-->
26: char buf[1024];<!--CRLF-->
27: setvbuf(stdin, buf, _IOFBF, 1024);<!--CRLF-->
28:
<!--CRLF-->
29: printf("stdin is ");<!--CRLF-->
30: streaming_property(stdin);
<!--CRLF-->
31:
<!--CRLF-->
32:
<!--CRLF-->
33: char c ;<!--CRLF-->
34:
<!--CRLF-->
35: int x = 0;<!--CRLF-->
36:
<!--CRLF-->
37: //輸入為q時,退出<!--CRLF-->
38: while((c = getc(stdin)) != 'q')<!--CRLF-->
39: {
<!--CRLF-->
40:
<!--CRLF-->
41: switch(c)<!--CRLF-->
42: {
<!--CRLF-->
43: case 'A':<!--CRLF-->
44: x++;
<!--CRLF-->
45: break;<!--CRLF-->
46: case 'B':<!--CRLF-->
47: cout << endl << "x = " << x << endl;;<!--CRLF-->
48: break;<!--CRLF-->
49: case 'C':<!--CRLF-->
50: x--;
<!--CRLF-->
51: break;<!--CRLF-->
52: default:<!--CRLF-->
53: cout << "please input A/B/C/q" << endl;<!--CRLF-->
54: }
<!--CRLF-->
55: }
<!--CRLF-->
56:
<!--CRLF-->
57: return 0;<!--CRLF-->
58: }
<!--CRLF-->
59:
<!--CRLF-->
60: 輸出:
<!--CRLF-->
61: $ ./bin/test
<!--CRLF-->
62: stdin is fully-buffered
<!--CRLF-->
63: buffer size is 0
<!--CRLF-->
64: discriptor is 0
<!--CRLF-->
65:
<!--CRLF-->
66: Change BUF
<!--CRLF-->
67:
<!--CRLF-->
68: stdin is fully-buffered
<!--CRLF-->
69: buffer size is 1024
<!--CRLF-->
70: discriptor is 0
<!--CRLF-->
71:
<!--CRLF-->
72: AAAAAAAAAAAAAAAAAAAAABqqqqqqqqqqqqqqqqqqqqqq
<!--CRLF-->
73:
<!--CRLF-->
74: x = 21
<!--CRLF-->
75: $
<!--CRLF-->
相關推薦
淺析C標準I/O庫
1: void streaming_property(FILE* file) <!--CRLF--> 2: { <!--CRLF--> 3: <!--CRLF--> 4: if(file->_flags & _IO_
C++標準I/O庫:iostream, fstream, sstringstream
sso www c const ams 生效 系列 linux 引用 binary 在寫代碼的過程中。我們最常做的事就是io操作,不管是對控制臺,還是文件。但一段時間不寫代碼就忘了,這裏理一下C++標準I/O庫的詳細類和操作。 C++的標準I/O庫包含我們常常使用的io
C 標準I/O庫粗略實現
介紹 功能 問題: 關系 請求 頻繁 determine 不出 tin 本文同時發表在 https://github.com/zhangyachen/zhangyachen.github.io/issues/123 寫一下fopen/getc/putc等C庫的粗略實現,參考
C++標準I/O庫
流介紹 標準I/O類的標頭檔案 <iostream> 包含istream、ostream、iostream這三個類。其中,iostream由istream和ostream派生而來。
Unix環境高級編程(三)標準I/O庫
buffer 文件創建 fop read 通信通道 種類 目的 lose com 標準I/O庫是ISO C的標準,在很多操作系統上面都實現。Unix文件I/O函數都是針對文件描述符的,當打開一個文件的時候,返回該文件描述符用於後續的I/O操作。而對於標準I/O庫,操作
APUE第5章 標準I/O庫
1、概述 標準I/O庫處理很多細節,如緩衝區分配、以優化的塊長度執行I/O等。這些處理使使用者不必擔心如何選擇使用正確的長度。本章深入瞭解I/O庫函式的操作。 2、流和FILE物件 對於所有I/O函式(見第3章)都圍繞檔案描述符的。當開啟一個檔案時,即返回一個檔案描述符
標準I/O庫
tel 下一個 相關 chat 寫入 使用 進制 set lose 設置流的定向: #include <stdio.h> #include <wchar.h> // 流的定向決定了所讀、寫的字符是單字節(字節定向)還是多字節的(寬定向) // 若
Unix/Linux程式設計-標準I/O庫
標準I/O庫 2.1 標準輸入、標準輸出和標準錯誤 程序中預定義了這3個流,可以自動地被程序呼叫。這些流引用的檔案與檔案描述符中的STDIN_FILENO、STDOUT_FILENO和STDERR_FILENO所引用的相同。這3個標準I/O流通過預定義檔案指標stdin、stdou
【APUE】標準I/O庫
本文章說明標準I/O庫1.流和FILE物件 對於檔案IO都是針對於檔案描述符的,但是對於標準I/O,則是針對於流進行的 當用標準I/O庫開啟一個檔案的時候,我們已使一個流和一個檔案相關聯 對於ASCII字符集,一個字元用一個位元組表示,對於國際字元,一個字元可用多個位元組表示 標準I/O檔案流可用於單
Chapter5-標準I/O庫(補充)-「APUE讀書筆記」
實現 每個標準I/O流都有一個相關聯的檔案描述符,可以用fileno函式來獲取。 #include<stdio.h> int fileno(FILE* fp); //POSIX支援的擴充套件,函式dup和fcntl需要此函式 one
5.9 標準I/O庫_二進位制I/O
下列兩個函式執行二進位制I/O操作: #include <stdio.h> size_t fread(void *restrict ptr, size_t size, size_t nobj, FILE *restrict fp); size_t fwri
UNIX環境高階程式設計學習之路(三)----標準I/O庫
#include <stdio.h> #include <wchar.h> int fwide(FILE *fp, int mode); 返回值:若流是寬定向的,返回 正值;若流是位元組定向的,返回負值;若流是未定向的,返回0;</pre></div><
標準I/O庫(五)
前言 UNIX一切皆檔案,掌握檔案的操作尤其重要。以下的內容主要是apue上面第五章內容,介紹了標準I/O庫的一些內容。 流和FILE物件 標準I/O庫,他們的操作都是圍繞流進行的 字元分為單位元組和多位元組,流的定向決定了是所讀、寫的字元是單位
標準I/O庫 筆記
標準I/O庫 1.流和FILE物件 a) ASCII字符集:一個字元用一個位元組表示 b) 國際字元:一個字元可以用多個位元組表示 c) 標準I/O檔案流可以用於單位元組或者多位元組字符集 2.流定向 a) 決定所讀、寫的字元是單位元組或者是多位元組 b) 流最初建立時無
第五章 標準I/O庫
本章講述的是標準I/O庫的很多細節,如緩衝區的分配、以優化的塊長度執行I/O等,因為有這些處理,讓我們不必擔心如何選擇正確的塊長度。 5.2 流和FILE物件 1.流定向決定了所讀、寫的字元是單位元組還是多位元組。當一個流最初被建立時,它並沒有定向。如
【C++標準I/0庫】錯誤:runtime_error was not declared
# 編譯出現:runtime_error was not declared #include <iostream> //#include <stdexcept> //runtime_error using namespace std; std
C primier plus 第十三章 13.2標準I/O
首先,關於main(int argc,char *argv[ ])。參考百度百科中的解釋。 https://baike.baidu.com/item/argc%20argv/10826112?fr=aladdin 1. argc的值是命令列引數的個數 什麼是命令列引數? 在命令列下呼
高速掌握Lua 5.3 —— I/O庫 (1)
跳過 控制 ont haml end {} simple table 最大 Q:什麽是”Simple Model”? A:全部的文件操作都基於一個默認的輸入文件和一個默認的輸出文件。這就意味著同一時間對於輸入和輸出來說,僅僅可操作一個文件(默認的文件)
標準I/O讀寫文件
sizeof linux 文件 文件的 main 方式 次數 col tdi 一、函數原型 1、FILE *fopen(const char *path, const char *mode); path:要打開文件路徑及文件名; mode: r 打開只
標準I/O及管道的使用用法
管道 標準i/o 程序:指令+數據 讀入數據 :Input 輸出數據 :Output Linux給程序提供的三種I/O設備 標準輸入,-O 默認接受來自鍵盤的輸入 標準輸出,-1 默認輸出到終端窗口 標準錯誤,-2 默認輸出到終端窗口> 文件內