perror函式 將上乙個函式發生錯誤的原因輸出

2021-09-12 19:45:34 字數 967 閱讀 5901

函式原型和標頭檔案為:

#include void perror(char *string);
引數 string 所指的字串會先列印出,後面再加上錯誤原因字串。此錯誤原因依照全域性變數errno的值來決定要輸出的字串。

在庫函式中有個errno變數,每個errno值對應著以字串表示的錯誤型別。當你呼叫"某些"函式出錯時,該函式已經重新設定了errno的值。perror函式只是將你輸入的一些資訊和現在的errno所對應的錯誤一起輸出。

if ((fp = fopen(filepath, "rb+")) == null) 

//當filepath是資料夾時,輸出的錯誤資訊為

//the reason is: is a directory

//當filepath不存在時,輸出的錯誤資訊為

//the reason is: no such file or directory

//peeror中帶有引數時,引數和errno值之間會加上「:」

擴充套件:

標準輸入(stdin)從終端裝置輸入內容,標準輸出(stdout)和標準錯誤輸出(stderr)都是輸出到終端上。 當linux開始執行程式的時候,程式缺省會開啟這3個檔案流,這樣就可以對終端進行輸入輸出操作。

stdin的檔案描述符為0,stdout的檔案描述符為1,stderr的檔案描述符為2。檔案描述符不同,就可以將正常的資訊和錯誤的資訊重定向到不同的檔案。

stdout輸出方式是行緩衝。輸出的字元會先存放在緩衝區,等按下回車鍵時才進行實際的i/o操作。 

stderr是不帶緩衝的,這使得出錯資訊可以直接盡快地顯示出來。

int main()

//將輸出 world!hello

//stdout的輸出會放在行緩衝buffer裡面,只有到換行的時候,才會輸出到螢幕。

Lintcode 上乙個排列

給定乙個整數陣列來表示排列,找出其上乙個排列。注意事項 排列中可能包含重複的整數 您在真實的面試中是否遇到過這個題?yes 樣例給出排列 1,3,2,3 其上乙個排列是 1,2,3,3 給出排列 1,2,3,4 其上乙個排列是 4,3,2,1 標籤 排列 思路 逆序找到第乙個不是遞減的數字置為i,從...

Lintcode 上乙個排列

給定乙個整數陣列來表示排列,找出其上乙個排列。樣例 給出排列 1,3,2,3 其上乙個排列是 1,2,3,3 給出排列 1,2,3,4 其上乙個排列是 4,3,2,1 解釋 所謂的上乙個排列其實就是把給定數字組合,並從大到小排列,找到與給定排列最接近,且比它小的排列 即其上乙個排列 比如 1,3,2...

51 上乙個排列

2017.9.25 可以理解為下乙個排列的逆思路。下乙個排列,是將乙個公升序序列逐步調整為降序序列的過程。上乙個排列,可以理解為將乙個降序序列逐步調整為公升序序列的過程。這樣,首先就是從後向前遍歷找到 num flag num flag 1 然後再從後向前遍歷,找到比num flag 小的最大值。交...