您好,登錄后才能下訂單哦!
1.perror()函數是一種簡單、統一的方式報告錯誤。ansi c 函數庫的許多函數調用操作系統來完成某些任務,I/O函數尤其如此。任何時候,當操作系統根據要求執行一些任何的時候,都存在失敗的可能。標準庫函數在一個外部整型變量errno(在errno.h中定義)中保存錯誤代碼之后把這個信息傳遞給用戶程序,提示操作失敗的準確原因。
2.perror()函數的原型:
#include<stdio.h>
void perror(charconst *message);
如果message不是NULL并且指向一個非空的字符串,perror函數就打印出這個字符串,后面跟一個分號和一個空格,然后打印出一條用于解釋errno當前錯誤代碼的信息。
3.perrno函數的最大優點是容易使用。良好的編程實踐要求任何可能產生錯誤的操作讀應該在執行之后進行檢查,確定它是否成功執行。
說明:
只有當一個庫函數失敗時,errno才會被設置。當函數成功執行時,errno的值不會被需改。因此,不能通過測試errno的值來判斷是否有錯誤發生。所以只有當被調用的函數提示有錯誤發生時檢查errno的值才有意義。
1.終止執行的函數是exit,它用于終止一個程序的執行。
2.它的原型為:
#include<stdlib.h>
void exit(intstatus);
3.status參數返回給操作系統,用于提示程序是否正常完成。
這個值和main()函數返回的整型狀態值相同。預定義符號EXIT_SUCCESS和EXIT__FAILURE分別提示程序的終止是成功還是失敗。
4.當程序發現錯誤情況使它無法繼續執行下去時,可以使用該函數。我們經常會在調用perrno之后再調用exit終止程序
5.該函數沒有返回值。當exit函數結束之后,程序已經消失。
1.流分為兩種類型,文本(text)流和二進制流(binary)流。
2.文本流的有些特性在不同的系統中可能不同。其中之一就是文本的行的最大長度。 標準規定至少允許254個字符。另一個可能不同的特性是文本行的結束方式。
1>在MS-DOS系統中,文本行預定以一個回車符和一個換行符結尾。
2>在UNIX系統中只使用一個換行符結尾。
3.標準文本行定義為零個或多個字符,后面跟一個表示結束的換行符。
1.二進制流中的字節將完全根據程序編寫它們的形式寫入到文件或設備中,而且完全根據它們從文件或設備讀取的形式讀入到程序中。
2.這種類型的流適用于非文本數據,但是如果I/O函數修改文本文件的行末字符,也可以把它用于文本文件。
1.stdio.h所包含的聲明之一就是FILE結構。FILE是一個數據結構,用于訪問一個流。
2.如果同時激活了幾個流,每個流都有一個相應的FILE與它關聯。為了在流上執行一些操作,可以調用一些合適的函數,并向它們傳遞一個與這個流關聯的FILE參數。
3.對于每個ANSI C程序,運行時系統必須提供至少三個流:
1>標準輸入(standard input):標準輸入是缺省情況下輸入的來源。
2>標準輸出(standard output) :標準輸出是缺省的輸出設置
3>標準錯誤(standard error):就是錯誤寫入的地方。Perror函數把它的輸出也寫到這個地方。在許多系統中,標準輸出和標準錯誤在缺省情況下相同的。但是,為錯誤信息準備一個不同的流以為著,即使標準輸出重定向到其他地方,錯誤信息仍將出現在屏幕或其他缺省的輸出設備上。
這些流的名字分別是stdin、stout和stderr。它們都是一個指向FILE結構的指針。
4.許多操作系統允許用戶在程序執行時修改缺省的標準輸入和輸出設備.
例如:
MS-DOS和UNIX系統都支持用下面的方法進行輸入/輸出重定向:program < data > answer
當該程序執行時,它將從文件data 而不是鍵盤作為標準輸入進行讀取,它將把標準輸出寫入到文件answer而不是屏幕上。
5.程序為必須同時活動狀態的每個文件聲明一個指針變量,其類型為FILE *。這個指針指向這個FILE結構,當它處于活動狀態時由流使用。
6.流通過調用fopen函數打開。為了打開一個流,你必須指定需要訪問的文件或設備以及它們的訪問方式(例如:讀、寫或者既讀又寫)。fopen()和操作系統驗證文件或設備確實存在并初始化FILE結構。然后,根據需要對該文件進行讀取或寫入。最后,調用flose函數關閉流。關閉一個流可以防止與它相關聯的文件被再次訪問,保證任何存儲于緩沖區的數據被正確地寫到文件中,并且釋放FILE結構使它可以用于另外的文件。
7.I/O函數以三種基本的形式處理數據:單個字符、文本行和二進制數據。對于每種形式,都有一組特定的函數對它們進行處理。
8.打開流
1>fopen()函數打開一個特定的文件,并把一個流和這個文件相關聯。原型如下:
FILE *fopen(char const *name,char const *mode);
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。