欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

C語言中返回錯誤信息的相關(guān)函數(shù)用法總結(jié)

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C語言|點(diǎn)擊: 次

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

#include <string.h>

定義函數(shù):

char * strerror(int errnum);

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

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

范例:

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

執(zhí)行:

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()函數(shù):打印最近一次系統(tǒng)錯誤信息
函數(shù)perror()用于拋出最近的一次系統(tǒng)錯誤信息,其原型如下:

  void perror(char *string);

【參數(shù)】string為要輸出的錯誤信息。

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

在庫函數(shù)中有個errno變量,每個errno值對應(yīng)著以字符串表示的錯誤類型。當(dāng)你調(diào)用"某些"函數(shù)出錯時,該函數(shù)已經(jīng)重新設(shè)置了errno的值。perror函數(shù)只是將你輸入的一些信息和現(xiàn)在的errno所對應(yīng)的錯誤一起輸出。

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

#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
int main( void )
{
  FILE *fp;
  fp = fopen( "test.txt", "w" );/*打開文件*/
  assert( fp ); /*斷言不為空*/
  fclose( fp );/*關(guān)閉*/
  fp = fopen( "nulltest.txt", "r" );/*打開一個不存在的文件*/
  if ( NULL == fp )
  {
    /*顯示最近一次錯誤信息*/
    perror("fopen( \"nulltest.txt\", \"r\" )");
  }
  return 0;
}

運(yùn)行結(jié)果:

fopen( "nulltest.txt", "r" ):No such file or directory

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

如果連續(xù)調(diào)用perror,如下:

perror("1");

perror("2");

會出現(xiàn)以下結(jié)果:

1:success

2:Illegal seek

這種問題出現(xiàn)的原因是:

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

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

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

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

頭文件:

#include <stdio.h>

定義函數(shù):

int ferror(FILE *stream);

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

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

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有