C錯誤處理

本文為個人學習筆記,僅用于個人學習、復習使用!

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,...),作用是將一個字符串寫入文件中。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/376010.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/376010.shtml
英文地址,請注明出處:http://en.pswp.cn/news/376010.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

存儲過程——存儲過程與視圖(三)

數據庫視圖&#xff1a;視圖是虛表&#xff0c;是從一個或幾個基本表&#xff08;或視圖&#xff09;中導出的表&#xff0c;在系統的數據字典中僅存放了視圖的定義&#xff0c;不存放視圖對應的數據。 在sql中視圖是基于sql語句的結果集的可視化的表&#xff1b;視圖包含行和列…

php如何轉類型,PHP數據類型轉換

指的是將數據(變量)的值轉換成目標數據類型。PHP中有兩種數據類型轉換方式&#xff1a;自動轉換&#xff0c;強制轉換自動轉換&#xff1a;系統根據操作所需要的類型將變量的值進行對應類型的轉換自動轉換都是系統本身所做的事情&#xff0c;不需要用戶去干預。強制轉換&#x…

lr_start_timer,lr_get_transaction_duration,lr_get_transaction_wasted_time函數使用總結

lr_start_timer&#xff1a; 函數的功能&#xff1a; 為了計算時間更加精確&#xff0c;可以用這個函數去掉LR自身的檢查點所浪費的時間。如text check and image time Action() { double time_elapsed; merc_timer_handle_t timer;web_url("487989.html","URLh…

c可變參數

本文為個人學習筆記&#xff0c;僅供個人學習、復習使用。參考鏈接&#xff1a;鏈接1、鏈接2在c語言中&#xff0c;我們可以定義這樣的函數&#xff0c;函數帶有可變數量的參數。 int func(int num,...){ . . . } int main(){func(2,2,3); }1、要注意定義函數時函數的形式&…

dz打不開plugin. php,Discuz!應用中心打不開空白的解決方法

近期&#xff0c;很多使用Discuz!程序建論壇的站長都會發現&#xff0c;Discuz!后臺的應用中心打不開了。這二天Discuz!終于給出了原因&#xff1a;十分抱歉的通知您&#xff0c;由于資源和人力投入問題&#xff0c;我們已經關閉了 www.discuz.net 的發言權限&#xff0c;但是歷…

編程習題05

1、給定一個數組a[N],我們希望構造數組b[N]&#xff0c;其中b[i]a[0]*a[1]*...*a[N-1]/a[i]。在構造過程&#xff1a;不允許使用除法&#xff1b;要求O(1)空間復雜度和O(n)時間復雜度&#xff1b;除遍歷計數器與a[N] b[N]外&#xff0c;不可使用新的變量(包括棧臨時變量、對空間…

ECshop安裝及報錯解決方案總結

一、安裝ECshop ECShop是一款B2C獨立網店系統 &#xff0c;適合企業及個人快速構建個性化網上商店。系統是基于PHP語言及MYSQL數據庫構架開發的跨平臺開源程序。2006年3月推出以來1.0版以來&#xff0c;受到市場的檢驗&#xff0c;廣受好評。 1.安裝準備 ECshop最新版本為2.7.3…

Command mysql 中文,MySQL Command Line[mysql命令行常用命令]_MySQL

bitsCN.comMySql下載地址&#xff1a;www.mysql.org第一招、mysql服務的啟動和停止net stop mysqlnet start mysql第二招、登陸mysqlmysql -u用戶名-p用戶密碼mysql -uroot -p&#xff0c; 回車後提示你輸入密碼&#xff0c;輸入12345&#xff0c;然後回車即可進入到mysql中了&…

setTimeout里如果有$(this),$(this)指的是誰?

$(".next").click(function(){ setTimeout(function(){$(this).addClass("gray");//指向的是window 而不是$(".next") },1000); })轉載于:https://www.cnblogs.com/xchlsl/p/4484762.html

數據結構--數組實現線性表

線性表&#xff1a;由同類型數據元素構成的有序序列的線性結構 編譯環境&#xff1a;Dev-C 結構實現&#xff1a; struct LNode {ElementType Data[MAXSIZE];int last; }; 主要操作函數&#xff1a; List MakeEmpty();//初始化一個空表ElementType FindKth(int k, List L);//根…

Codeforces Round #241 (Div. 2) A. Guess a number!

題目鏈接 題意 &#xff1a; 就是猜數游戲&#xff0c;根據給定的操作&#xff0c;讓你輸出一個符合條件的。 思路 &#xff1a; 這個題好玩兒&#xff0c;設置兩個變量&#xff0c;一個找符合條件的數的上限&#xff0c;一個找下限&#xff0c;再判斷一下。 1 #include <st…

php中嵌套調用的原理,嵌套調用

## 嵌套調用- 模塊與模塊之間的相互調用(相對路徑)- 項目和項目之間的相互調用(絕對路徑)- 也可以寫一個通用模塊就可以大面積使用&#xff0c;減少代碼維護成本- 或許可以實現一些神奇的效果#### 示例代碼設置文件/html/www/demo/tpl/tpl.blade.php內容如下~~~這是最頂端模塊{…

SET-UID程序漏洞實驗

20125102 一、實驗描述 Set-UID 是Unix系統中的一個重要的安全機制。當一個Set-UID程序運行的時候&#xff0c;它被假設為具有擁有者的權限。例如&#xff0c;如果程序的擁有者是root&#xff0c;那么任何人運行這個程序時都會獲得程序擁有者的權限。Set-UID允許我們做許多很有…

統計文件中有多少個單詞amp;c語言實現

假設文件中的單詞都是字母的組合&#xff0c;且單詞間用空格或者“."區分。實驗環境&#xff1a;Dev-C#include<stdio.h> #include<stdlib.h>int main(){FILE *fp;int i;int fr;long fsize;int word0;int sum0;char filename[20];char *buffer;printf("要…

oracle mul,匯編語言乘指令 MUL、IMUL的具體使用

MUL: 無符號乘;影響 OF、CF 標志位;指令格式:;MUL r/m ;參數是乘數;如果參數是 r8/m8, 將把 AL 做乘數, 結果放在 AX;如果參數是 r16/m16, 將把 AX 做乘數, 結果放在 EAX;如果參數是 r32/m32, 將把 EAX 做乘數, 結果放在 EDX:EAX當乘積的高半部分(AH、DX、EDX、RDX)中存有結…

java實驗二

課程&#xff1a;Java程序設計 班級&#xff1a; 1352 姓名&#xff1a;黃衛   學號&#xff1a;20135221 成績&#xff1a; 指導教師&#xff1a;婁嘉鵬 實驗日期&#xff1a;2015.05.05 實驗密級&#xff1a; 預…

兩數之和c語言實現

題目描述&#xff1a;給定一個整數數組和一個目標值&#xff0c;找出數組中和為目標值的兩個數。你可以假設每個輸入只對應一種答案&#xff0c;且同樣的元素不能被重復利用。示例:給定 nums [2, 7, 11, 15], target 9因為 nums[0] nums[1] 2 7 9 所以返回 [0, 1]解題思路…

【Linux】正確的關機方法

1&#xff09;shutdown命令 我們較常使用的是shutdown這個命令&#xff0c;這個命令可以安全地關閉或重啟Linux系統&#xff0c;它在系統關閉之前給系統上的所有登錄用戶提示一條警告信息。該命令還允許用戶指定一個時間參數&#xff0c;可以是一個精確的時間&#xff0c;也可以…

oracle 存儲過程寫文件,Oracle寫本地文件

Oracle寫本地文件是指寫到運行Oracle的主機上&#xff0c;而不是運行該腳本的機器上。說起來有點拗口&#xff0c;實際上就是無論在哪里執行這個過程&#xff0c;生成的文件始終都是在服務器上的。下面過程實現了這個功能&#xff1a;logdir是指文件存放路徑。有Oracle的direct…

兩數相加c語言實現

給定兩個非空鏈表來表示兩個非負整數。位數按照逆序方式存儲&#xff0c;它們的每個節點只存儲單個數字。將兩數相加返回一個新的鏈表。你可以假設除了數字 0 之外&#xff0c;這兩個數字都不會以零開頭。示例&#xff1a;輸入&#xff1a;(2 -> 4 -> 3) (5 -> 6 -&g…