第九節 標準輸入輸出

2021-07-03 16:47:41 字數 1661 閱讀 7104

標準輸入輸出的基本操作,包括檔案的開啟與關閉,緩衝區的操作

非格式化輸入輸出,包括單個位元組、字串以及資料塊的輸入輸出

格式化輸入輸出

1.標準輸入輸出的基本操作

標準輸入檔案(stdin):一般為鍵盤

標準輸出檔案(stout):一般為顯示器

標準錯誤輸出檔案(stderr):一般為顯示器

1.檔案的開啟

操作檔案之前要開啟檔案,開啟檔案主要是在系統中分配一些資源用於儲存該檔案的狀態資訊,並獲取檔案的指標,

開啟檔案的函式為fopen

2.檔案的關閉

fclose函式

3.緩衝區的重新整理

重新整理操作是指將緩衝區中的資料清除

fflush函式將緩衝區中的資料寫入到磁碟檔案或輸出到使用者終端,同時清空緩衝區

fpurge函式將緩衝區的資料直接清除,包括尚未讀取或寫入的資料

4.緩衝區屬性的設定

緩衝區的大小和型別等都可以通過函式來設定,緩衝區的型別有下面3種。

全緩衝:緩衝區被填滿後才執行輸入輸出操作,將資料寫入到磁碟檔案或輸出到使用者終端。

行緩衝:緩衝區中填入換行符時,執行輸入輸出操作

無緩衝:不對資料進行快取,標準錯誤輸出stderr一般就是無緩衝的,這可以使錯誤資訊盡快地顯示出來。

開啟檔案後,使用者可以使用下面的函式來設定自己的檔案緩衝區,而不使用fopen函式開啟檔案設定的預設緩衝區。

定義:int setvbuf(file * stream,char * buf,int mode,size_t size);

說明:在開啟檔案流後, 讀取內容之前, 呼叫setvbuf()可以用來設定檔案流的緩衝區。引數stream為指定的檔案流,

引數buf指向自定的緩衝區起始位址, 引數size為緩衝區大小,

引數mode有下列幾種

_ionbf 無緩衝io

_iolbf 以換行為依據的無緩衝io

_iofbf 完全無緩衝io。如果引數buf為null指標, 則為無緩衝io。

除上面函式外,還有如下3個函式:

setbuf

setbuffer

setlinebuf

2.非格式化輸入輸出

非格式化輸入輸出包括單個位元組輸入輸出、字串輸入輸出以及資料塊輸入輸出

1.單個位元組輸入輸出

從檔案讀乙個位元組

fgetc

getchar函式從標準輸入讀乙個位元組,等價於fgetc(stdin)

向指定檔案寫乙個位元組

fputc

putchar函式可以向標準輸出寫乙個位元組,等價於fputc(c, stdout)

2.字串輸入輸出

fgets函式可以從指定的檔案中讀一行字元到緩衝區中,

fputs函式可以向指定的檔案寫入乙個字串

feof函式來測試讀寫位置是否到達檔案末尾

3.資料塊輸入輸出

對檔案進行輸入輸出操作,也可以以資料塊為單位進行,所謂資料塊,是指一串固定長度的位元組,從檔案中

讀取資料塊用fread函式

向檔案中寫入資料塊使用fwrite函式

3.格式化輸入輸出

格式化輸出fprintf

printf等價於fprintf(stdout,...)

格式化輸入函式為fscanf

scanf等價於fscanf(stdin,...)

第九節除錯

除錯 第一種方法簡單直接粗暴有效,就是用print 把可能有問題的變數列印出來看看 斷言凡是用print 來輔助檢視的地方,都可以用斷言 assert 來替代 assert的意思是,表示式n 0應該是true,否則,根據程式執行的邏輯,後面的 肯定會出錯。如果斷言失敗,assert語句本身就會丟擲a...

java筆記第九節

第九節 一 設計模式 相當於戰術 入格 看 可用性,美觀性 的由23種。二 架構模式 相當於戰略 目前只有兩種 1.b s 瀏覽器 伺服器,邏輯 堆放到伺服器上 方便公升級,修改,伺服器任務重 b s網頁上的內容是臨時從伺服器上下下來的 2.c s 客戶 伺服器,邏輯 堆放到客戶端上 不適合管理軟體...

第九節 開閉原則

1 開閉原則,對擴充套件是開放的,對修改是關閉的。2 復用,模組復用和系統復用,其中模組部分復用或將整個專案程式設計可復用的。3 內部模組化時,之中有不同的邏輯。將 分為業務邏輯層和資料儲存層,將 模組化成兩個層級。像 對選單的處理,選單功能實現為業務邏輯 像 選單資料儲存用鍊錶,也可以以後改為雜湊...