日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言中返回错误信息的函数总结

發布時間:2025/1/21 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言中返回错误信息的函数总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C語言strerror()函數:返回錯誤原因的描述字符串

頭文件:

#include <string.h> 定義函數: char?*?strerror(int?errnum);

函數說明:strerror()用來依參數errnum 的錯誤代碼來查詢其錯誤原因的描述字符串, 然后將該字符串指針返回.

返回值:返回描述錯誤原因的字符串指針.

范例:

[cpp]?view plaincopy
  • /*?顯示錯誤代碼0?至9?的錯誤原因描述?*/??
  • #include?<string.h>??
  • main()??
  • {??
  • ??int?i;??
  • ??for(i?=?0;?i?<?10;?i++)??
  • ??printf("%d?:?%s\n",?i,?strerror(i));??
  • }??
  • 執行:

    [cpp]?view plaincopy
  • 0?:?Success??
  • 1?:?Operation?not?permitted??
  • 2?:?No?such?file?or?directory??
  • 3?:?No?such?process??
  • 4?:?Interrupted?system?call??
  • 5?:?Input/output?error??
  • 6?:?Device?not?configured??
  • 7?:?Argument?list?too?long??
  • 8?:?Exec?format?error??
  • 9?:?Bad?file?descriptor??
  • C語言perror()函數:打印最近一次系統錯誤信息
    函數perror()用于拋出最近的一次系統錯誤信息,其原型如下:

    void?perror(char?*string);

    【參數】string為要輸出的錯誤信息。

    說明:perror()用來將上一個函數發生錯誤的原因輸出到標準錯誤(stderr)。參數string所指的字符串會先打印出,后面再加上錯誤原因字符串,此錯誤原因依照全局變量errno 的值來決定要輸出的字符串。

    在庫函數中有個errno變量,每個errno值對應著以字符串表示的錯誤類型。當你調用"某些"函數出錯時,該函數已經重新設置了errno的值。perror函數只是將你輸入的一些信息和現在的errno所對應的錯誤一起輸出。

    【實例】打開一個不存在的文件并輸出錯誤信息。

    [cpp]?view plaincopy
  • #include?<stdio.h>??
  • #include?<assert.h>??
  • #include?<stdlib.h>??
  • int?main(?void?)??
  • {??
  • ??FILE?*fp;??
  • ??fp?=?fopen(?"test.txt",?"w"?);/*打開文件*/??
  • ??assert(?fp?);?/*斷言不為空*/??
  • ??fclose(?fp?);/*關閉*/??
  • ??fp?=?fopen(?"nulltest.txt",?"r"?);/*打開一個不存在的文件*/??
  • ??if?(?NULL?==?fp?)??
  • ??{??
  • ????/*顯示最近一次錯誤信息*/??
  • ????perror("fopen(?\"nulltest.txt\",?\"r\"?)");??
  • ??}??
  • ??return?0;??
  • }??
  • 運行結果: fopen( "nulltest.txt", "r" ):No such file or directory

    程序先定義一個文件指針fp,之后創建文件 test.txt,斷言文件打開成功,然后關閉該文件,再以只讀的方式打開文件nulltest.txt,判斷該文件指針是否問空,如果為空則使用 perror() 輸出錯誤信息。perror()用來將上一個函數發生錯誤的原因 輸出到標準設備(stderr)。函數參數string所指的字符串會先打印出, 后面再加上錯誤原因字符串。此錯誤原因依照全局變量error的值來決定要輸出的字符串。

    如果連續調用perror,如下:

    perror("1"); perror("2");
    會出現以下結果:
    1:success 2:Illegal seek

    這種問題出現的原因是:

    perror()是通過lseek方法根據errorno查找對應的錯誤信息,然后輸出的。

    在程序運行的時候,errorno的初始值對應的信息為:Success。只有程序中有錯誤出現時,才會改變給errorno。如果沒有錯誤出現,errorno的值是不會改變的。

    但是perror方法是個例外,每次調用perror方法,都會首先輸出errorno對應的信息,然后重置errorno為undefined,這時如果馬上在一次調用perror,perror中的lseek根據undefined去查找錯誤信息,就會拋錯,錯誤剛好被記錄在errorno中,因此,就把lseek的錯誤打印出來了。所以第一次調用perror方法的時候會正常數據錯誤信息,但是如果連續調用第二次,由于第一次的perror調用已經把errorno設置成了undefined,所以連續的第二次,第三次...........第一億次調用都會輸出Illegal seek錯誤。

    C語言ferror()函數:檢查文件流是否有錯誤發生

    頭文件:

    #include <stdio.h>
    定義函數:
    int?ferror(FILE?*stream);

    函數說明:ferror()用來檢查參數stream 所指定的文件流是否發生了錯誤情況, 如有錯誤發生則返回非0 值.

    返回值:如果文件流有錯誤發生則返回非0 值.

    總結

    以上是生活随笔為你收集整理的C语言中返回错误信息的函数总结的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。