本文為個人學習筆記,僅用于個人學習、復習使用!
c語言不提供對錯誤處理的直接支持,但是作為一種系統編程語言,它以返回值得形式允許您訪問底層數據,在發生錯誤時,大多數的c或Unix函數調用返回1或NULL,同時會設置一個錯誤代碼errno,該錯誤代碼是全局變量,表示在函數調用期間發生了錯誤。您可以在errno.h頭文件中找到各種各樣的錯誤代碼。
所以c程序員可以通過檢查返回值,然后根據返回值決定采取哪種適當的動作。開發人員應該在程序初始化時,把errno設置為0,這是一種良好的編程習慣。0表示程序中沒有錯誤。
1、可通過errno確定錯誤的類
c語言提供了perror()和strerror()函數來顯示與error相關的文本信息。
perror()函數顯示您傳給他的字符串,后面跟一個冒號、一個空格、和當前error值得文本表示形式。
strerror()函數,返回一個指針,指針指向當前error值得文本表示形式。
我們要使用stderr文件流來輸出所有的錯誤。
#include<stdio.h>
#include<errno.h>
#include<string.h>extern int errno;int main(){FILE *pf;int errnum;pf=fopen("unexist.txt","rb");if(pf==NULL){errnum=errno;fprintf(stderr,"錯誤號:%d\n",errno);perror("通過perror輸出錯誤");fprintf(stderr,"打開文件錯誤:%s\n",strerror(errnum));}else{fclose(pf);}return 0;
}
2、可以通過perror()函數和strerror()函數來輸出錯誤號所指向的錯誤類型,應通過stderr文件流輸出錯誤信息
輸出結果為:
錯誤號: 2
通過perror輸出錯誤:No such file or directory
打開文件錯誤:No such file or directory
fprintf()函數原型:int fprintf(FILE *fp,const char *format,...),作用是將一個字符串寫入文件中。