C 輸入流出錯處理

2021-09-03 08:12:16 字數 754 閱讀 5587

為避免錯誤字元導致輸入失敗,在輸入失敗之時,清除錯誤標誌並且忽略錯誤字元,之後重新輸入,直至輸入正確為止。

使用std::cin.seekg方法移動輸入序列指標至序列末尾,**如下所示:

#include

intmain()

cin.

ignore()

.get()

;// 忽略enter鍵產生的換行符並等待enter鍵以暫停程式

return0;

}

經測試,在以下兩個環境之中,對於預設緩衝區移動輸入序列指標失敗,而輸入流設定失敗標誌(failbit)。

作業系統

編譯工具

windows 10

visual studio 2017

ubuntu 18.04

gcc 7.4

**解析

運用std::cin.ignore方法從輸入序列中提取字元並丟棄之,**如下所示:

#include

#include

intmain()

cin.

ignore()

.get()

;return0;

}

輸入流物件std::cin的成員函式ignore用於忽略輸入序列剩餘字元,直至忽略限定數量的字元,或者遇到分隔字元,出錯或者到達序列末尾為止,分隔字元也被忽略。

**解析

APUE unix出錯處理

當unix函式出錯時 系統呼叫 常常會返回乙個負值,而且整型變數errno通常被設定為含有附加資訊的乙個值。檔案中定義了符合errno以及可以賦予它的各種常量,這些常量都以字元e開頭。另外,unix系統手冊第2部分的第1頁intro 2 列出了所有這些出錯常量。在linux中,出錯常量在errno ...

出錯處理函式

我們知道,系統函式呼叫不能保證每次都成功,必須進行出錯處理,這樣一方面可以保證程式邏輯正常,另一方面可以迅速得到故障資訊。出錯處理函式 include include char strerror int errnum see notes errnum 傳入引數,錯誤編號的值,一般取 errno 的值...

linux 出錯處理

當linux 系統出錯時候,常返回乙個負值記錄在變數errno中。對於errno的使用用兩條規則 1 如果沒有出錯,其值不會被清除 2 任一函式不會將errno置0 c標準有2個函式列印出錯日誌 include char strerror int errnum 此函式講errno 對映成乙個字串,返...