1. 程式人生 > >C語言錯誤處理技巧

C語言錯誤處理技巧

1.

當呼叫一個函式失敗時,可以用perror輸出友善的錯誤處理。便於出錯時除錯。

#include <stdio.h>
void perror(const char*s);
perror在標準錯誤輸出上輸出一條訊息來描述perror呼叫之前最近出現的錯誤。一般是系統呼叫或庫函式呼叫失敗導致的錯誤。

perror會先輸出你傳入的字元從s,然後緊接著輸出一個冒號,接著是一個空格,再接著是一個訊息串和一個換行符。

2.

在errno.h中定義了巨集__FILE__,__FUNCTION__,__LINE__(注意前後都是兩個連著的下劃線),對應出錯的檔案,函式,行數。這樣就你就可以在看到錯誤資訊時快速的知道錯誤所在了。

eg:

fprintf(stderr,"%s,%s,%d.\n",__FILE__,__FUNCTION__,__LINE__);   //順序打印出出錯的檔案,函式,行數。

上面用fprintf輸出到標註出錯輸出是為了讓錯誤更快的輸出。因為如果用printf,對應的標準輸出為行緩衝機制,可能導致錯誤資訊輸出不及時。而標準錯誤輸出是無緩衝的。

perror和巨集__FILE__,__FUNCTION__,__LINE__結合,媽媽再也不用擔心我的錯誤處理了

相關推薦

C語言錯誤處理技巧

1. 當呼叫一個函式失敗時,可以用perror輸出友善的錯誤處理。便於出錯時除錯。 #include <stdio.h> void perror(const char*s);perror

C語言宏定義技巧——多次包括頭文件內容不同

ear 文件 我們 art bsp enum class 包括 nbsp 1、 頭文件定義例如以下: /* declears in “funcs.h” */ FUNC_1(ID_FUN1_001) FUNC_1(ID_FUN1_002) FUNC_2(ID_FUN2_

C語言異常處理之 setjmp()和longjmp()

divide font 變量 bsp ron 否則 sharp highlight == 異常處理之除0情況 相信大家處理除0時,都會通過函數,然後判斷除數是否為0,代碼如下所示: double divide(doublea,double b) { co

C 語言異常處理(五十二)

異常處理 C 中的異常處理 if...else... setjmp() longjmp() 我們今天來看下異常處理,在看 C++ 的異常處理之前,先來看看 C 語言中的異常處理。那麽什麽是異常呢?在程序運行過程中可能會產生異常,異常(Exception)與 Bug 的區別是

Go語言開發(七)、Go語言錯誤處理

pro package error 先進後出 goroutin cee 錯誤處理機制 避免 而是 Go語言開發(七)、Go語言錯誤處理 一、defer延遲函數 1、defer延遲函數簡介 defer在聲明時不會立即執行,而是在函數return後,再按照FILO(先進後出)的

C語言處理命令之檔案包含

檔案包含預處理命令的一般形式是: #include<檔名> 或者 #include“檔名” #include命令告訴前處理器用指定檔案的內容替換這條命令,兩種不同的命令格式決定了前處理器對指定檔案的搜尋方式:如果檔名是用一對尖括號括起來的,則前處理器直接到存放編譯器所提供的標準標頭檔案的目

(C/C++學習)14.C語言字串處理函式(二)

說明:上節著重解釋了字串處理的庫函式處理,這節將針對一些常用的需求,進行非庫函式的處理。 一.去除某一個字串中的某個字元 1.去除字串右邊的空格 1 void trimStrRightSpace(char * str) 2 { 3 while(*str) 4 s

C++語言錯誤 C2679 二進位制“>>”: 沒有找到接受“overloaded-function”型別的右運算元的運算子(或沒有可接受的轉換)

C++語法錯誤 C2679 二進位制“>>”: 沒有找到接受“overloaded-function”型別的右運算元的運算子(或沒有可接受的轉換) 上網找了好久都沒有找到答案,所以 我想請教一下是怎麼回事,謝謝各位 visual studio2017 //標頭檔案 #inclu

C語言 字串處理

//輸入一段字串,無論是否有重複字母出現, //都只打印出現過的小寫字母,並按照小寫字母順序列印。 //如輸入qewqwr322rqw<>211qESFSSEraZz, 列印aeqrwz) #include <stdio.h> void fun(); voi

14. C語言 -- 字串處理函式

本部落格主要內容為 “小甲魚” 視訊課程《帶你學C帶你飛》【第一季】 學習筆記,文章的主題內容均來自該課程,在這裡僅作學習交流。在文章中可能出現一些錯誤或者不準確的地方,如發現請積極指出,十分感謝。 也歡迎大家一起討論交流,如果你覺得這篇文章對你有所幫助,記得評論、點贊哦 ~(。

常用的c語言字串處理函式

1.獲取一個字串 char *p = fgets(buf, size, stdin);   2.字串查詢     ret = strstr(cmd, "test");     if(ret != NULL)    

C++筆記 第六十三課 C語言異常處理---狄泰學院

如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。 學習C++編譯環境:Linux 第六十三課 C語言異常處理 1.異常處理 異常的概念 程式在執行過程中可能產生異常 異常(Exception)與Bug的區別 異常是程式執行時可預料的執行分支 Bug是程式中

C語言字串處理基礎函式(一)

1.strlen()函式 功能:函式返回字串str 的長度( 即空值結束符之前字元數目,不包括控制結束符)。 語法: #include <string.h> size_t strlen( char *str ); 例子: #include <stdio

第63課-C語言異常處理

一、異常處理 1. 異常的概念 程式在執行過程中可能產生異常 異常(Exception)與Bug的區別 異常時程式執行時可預料的執行分支 Bug是程式中的錯誤,是不被預期的執行方式 2. 異常(Exception)和B

C語言—字串處理函式

1、puts(字串陣列) ,gets(字串陣列) 2、strcat(字串陣列1,字串陣列2) 把字串陣列2接到字串陣列1中。 3、strcpy(字串陣列1,字串陣列2) 把字串陣列2複製到字串陣列1中。 strncpy(字串陣列1,字串陣列2,n),將字串2中前n個

C 語言字串處理方式積累

寫在前面:本文主要用來積累字串處理的各種方式。 正文: 1、目的:函式輸入一個字串,要求去掉字串中的行首和行尾的空格後輸出。       實現函式和測試程式碼如下: #include <

C語言錯誤程式請大佬幫忙修改 原始碼

** 題目 ** 定義序號、學號、姓名、獲得學分、高等數學、大學體育、中國近代史綱要、軟體技術導論、大學英語、C語言程式設計、平均分的資料型別,並輸入全班同學資料,根據成績計算獲得學分和平均分呢,並按照上表所示格式輸出(注意間隔和對齊)。在輸入過程中應該對成績的合法性、學號的規範

c語言 字元處理

char型別,佔用給一個位元組,8個二進位制位,可以儲存256(2的8次方)個值 可列印字元包括:小寫字母,大寫字母,數字,標點和特殊字元(+,*),以及間隔字元(空格,換行) 非列印字元包括:換行

C語言處理字串的函式

在C語言中有許多字串處理函式,在寫程式的時候常常想不起來或則不瞭解區別,今天就花點時間將這些函式做個總結,以便以後查詢使用。 一、輸入函式 scanf 與 scanf_s 函式 char buf[10] = { 0 }; scanf("%s",

C語言處理命令詳解

本文參考諸多資料,詳細介紹常用的幾種預處理功能。因成文較早,資料來源大多已不可考證,敬請諒解。全文字數2萬,閱讀時間50分鐘,建議先收藏。 一 前言 預處理(或稱預編譯)是指在進行編譯的第一遍掃描(詞法掃描和語法分析)之前所作的工作。預處理指令指示在程式正式編譯前就由編譯器進行的操作