C語言中errno與perror 函式

2021-09-27 04:14:01 字數 1013 閱讀 6178

stdlib.h標頭檔案即standard library標準庫函式標頭檔案,包含了c、c++語言的最常用的系統函式,該檔案中還包含了c語言標準庫函式的定義。

errno巨集在stdlib.h中的定義為

#define errno (*_errno())
errno巨集用於儲存程式在執行中的錯誤**(error code),以及用於顯示錯誤資訊的字串。當程式執行時,errno巨集被設定為0,一旦程式發生了系統級的錯誤,errno巨集就會被設定為其它值。

在「2 errno巨集」中提到的errno巨集獲取到的錯誤資訊是錯誤的索引號,可以通過strerror()函式獲取該錯誤索引號對應的錯誤資訊。strerror()函式在string.h標頭檔案中定義,其格式為

char *strerror( int errnum );
其中,引數errnum是errno巨集獲取的錯誤索引號,該函式的返回值是錯誤資訊。

perror()函式顯示標準錯誤輸出流stderr中的錯誤資訊,該函式的格式為:

void perror( const char *message );
其中引數message為要顯示的資訊,該資訊不包括儲存在stderr中的錯誤資訊。關於stderr,請參考《c++中fprintf()函式與stdout、stderr》

以下**通過兩種方法實現了列印錯誤資訊,一種是通過perror()函式,另一種是通過strerror()函式和errno。

#include #include int main()

else

return 0;

}

在以上**中,通過fopen()函式開啟指定的檔案,如果開啟該檔案失敗,則fopen()函式的返回值是null,此時可以通過perror()函式或者strerror()函式顯示錯誤資訊。輸出錯誤資訊如圖1所示。

圖1 錯誤資訊

從以上錯誤資訊可以看出,fopen()函式開啟指定檔案失敗的主要原因是該檔案不存在。

c語言 出錯處理errno

include void perror const char msg 1.errno變數 檔案 中定義了符號 errno 以及可以賦予它的各種常量,這些常量都是以字元 e 開頭。例如,若 errno 等於常量 eacces,表示產生了許可權問題 例如,沒有開啟所要求檔案的足夠許可權 errno特點 ...

C語言中的 與

連線符號由兩個井號組成,其功能是在帶引數的巨集定義中將兩個子串 token 聯接起來,從而形成乙個新的子串。但它不可以是第乙個或者最後乙個子串。所 謂的子串 token 就是指編譯器能夠識別的最小語法單元。具體的定義在編譯原理裡有詳盡的解釋,但不知道也無所謂。同時值得注意的是 符是把傳遞過來 的引數...

linux中c語言errno的使用

在linux中使用c語言程式設計時,errno是個很有用的動動。他可以把最後一次呼叫c的方法的錯誤 保留。但是如果最後一次成功的呼叫c的方法,errno不會改變。因此,只有在c語言函式返回值異常時,再檢測errno。errno會返回乙個數字,每個數字代表乙個錯誤型別。詳細的可以檢視標頭檔案。usr ...