C错误处理
本文為個(gè)人學(xué)習(xí)筆記,僅用于個(gè)人學(xué)習(xí)、復(fù)習(xí)使用!
c語(yǔ)言不提供對(duì)錯(cuò)誤處理的直接支持,但是作為一種系統(tǒng)編程語(yǔ)言,它以返回值得形式允許您訪問(wèn)底層數(shù)據(jù),在發(fā)生錯(cuò)誤時(shí),大多數(shù)的c或Unix函數(shù)調(diào)用返回1或NULL,同時(shí)會(huì)設(shè)置一個(gè)錯(cuò)誤代碼errno,該錯(cuò)誤代碼是全局變量,表示在函數(shù)調(diào)用期間發(fā)生了錯(cuò)誤。您可以在errno.h頭文件中找到各種各樣的錯(cuò)誤代碼。 所以c程序員可以通過(guò)檢查返回值,然后根據(jù)返回值決定采取哪種適當(dāng)?shù)膭?dòng)作。開(kāi)發(fā)人員應(yīng)該在程序初始化時(shí),把errno設(shè)置為0,這是一種良好的編程習(xí)慣。0表示程序中沒(méi)有錯(cuò)誤。 1、可通過(guò)errno確定錯(cuò)誤的類 c語(yǔ)言提供了perror()和strerror()函數(shù)來(lái)顯示與error相關(guān)的文本信息。 perror()函數(shù)顯示您傳給他的字符串,后面跟一個(gè)冒號(hào)、一個(gè)空格、和當(dāng)前error值得文本表示形式。 strerror()函數(shù),返回一個(gè)指針,指針指向當(dāng)前error值得文本表示形式。 我們要使用stderr文件流來(lái)輸出所有的錯(cuò)誤。 #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,"錯(cuò)誤號(hào):%d\n",errno);perror("通過(guò)perror輸出錯(cuò)誤");fprintf(stderr,"打開(kāi)文件錯(cuò)誤:%s\n",strerror(errnum));}else{fclose(pf);}return 0; } 2、可以通過(guò)perror()函數(shù)和strerror()函數(shù)來(lái)輸出錯(cuò)誤號(hào)所指向的錯(cuò)誤類型,應(yīng)通過(guò)stderr文件流輸出錯(cuò)誤信息 輸出結(jié)果為: 錯(cuò)誤號(hào): 2 通過(guò)perror輸出錯(cuò)誤:No such file or directory 打開(kāi)文件錯(cuò)誤:No such file or directoryfprintf()函數(shù)原型:int fprintf(FILE *fp,const char *format,...),作用是將一個(gè)字符串寫(xiě)入文件中。
c語(yǔ)言不提供對(duì)錯(cuò)誤處理的直接支持,但是作為一種系統(tǒng)編程語(yǔ)言,它以返回值得形式允許您訪問(wèn)底層數(shù)據(jù),在發(fā)生錯(cuò)誤時(shí),大多數(shù)的c或Unix函數(shù)調(diào)用返回1或NULL,同時(shí)會(huì)設(shè)置一個(gè)錯(cuò)誤代碼errno,該錯(cuò)誤代碼是全局變量,表示在函數(shù)調(diào)用期間發(fā)生了錯(cuò)誤。您可以在errno.h頭文件中找到各種各樣的錯(cuò)誤代碼。 所以c程序員可以通過(guò)檢查返回值,然后根據(jù)返回值決定采取哪種適當(dāng)?shù)膭?dòng)作。開(kāi)發(fā)人員應(yīng)該在程序初始化時(shí),把errno設(shè)置為0,這是一種良好的編程習(xí)慣。0表示程序中沒(méi)有錯(cuò)誤。 1、可通過(guò)errno確定錯(cuò)誤的類 c語(yǔ)言提供了perror()和strerror()函數(shù)來(lái)顯示與error相關(guān)的文本信息。 perror()函數(shù)顯示您傳給他的字符串,后面跟一個(gè)冒號(hào)、一個(gè)空格、和當(dāng)前error值得文本表示形式。 strerror()函數(shù),返回一個(gè)指針,指針指向當(dāng)前error值得文本表示形式。 我們要使用stderr文件流來(lái)輸出所有的錯(cuò)誤。 #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,"錯(cuò)誤號(hào):%d\n",errno);perror("通過(guò)perror輸出錯(cuò)誤");fprintf(stderr,"打開(kāi)文件錯(cuò)誤:%s\n",strerror(errnum));}else{fclose(pf);}return 0; } 2、可以通過(guò)perror()函數(shù)和strerror()函數(shù)來(lái)輸出錯(cuò)誤號(hào)所指向的錯(cuò)誤類型,應(yīng)通過(guò)stderr文件流輸出錯(cuò)誤信息 輸出結(jié)果為: 錯(cuò)誤號(hào): 2 通過(guò)perror輸出錯(cuò)誤:No such file or directory 打開(kāi)文件錯(cuò)誤:No such file or directoryfprintf()函數(shù)原型:int fprintf(FILE *fp,const char *format,...),作用是將一個(gè)字符串寫(xiě)入文件中。
總結(jié)
- 上一篇: 汇编语言中变量的声明
- 下一篇: c可变参数