在編寫strcpy函式時的記錄

2021-08-08 03:25:46 字數 1279 閱讀 3028

strcpy函式

char*test( char * strdes,const

char *strsrc)

有一句是while ((*strdes++ = *strsrc++) != 『\0』);

① *strdes++ 運算順序是先*strdes,再++

② assert(bool返回值的表示式)

標頭檔案

#include  

void

assert( int expression );

assert的作用是先計算表示式 expression ,如果其值為假(即為0),那麼它先向stderr列印一條出錯資訊,然後通過呼叫 abort 來終止程式執行。 會彈出除錯命令視窗,提示具體在哪個檔案的哪一行發生了斷言錯誤!

assert只有在debug版本中才有效,如果編譯為release版本則被忽略。

一些比較好的在程式中使用assert的地方:

(1)空指標檢查。例如,針對乙個函式的引數進行空指標檢查。你可以這樣使用:

assert (pointer != null);
產生的錯誤會像這樣:

assertion 『pointer != ((void *)0)』 failed

這樣,當出現空指標時,你的程式就會退出,並很好的給出錯誤資訊。

(2)檢查函式引數的值。例如,如果乙個函式只能在它的乙個引數foo為正值的時候被呼叫,你可以在函式開始時這樣寫:

assert (foo > 0);
這將幫助你檢測函式的錯誤使用,這也給源**閱讀者很清晰的印象,那就是在這裡對函式的引數值有限制。

以下是使用斷言的幾個原則:

(1)使用斷言捕捉不應該發生的非法情況。不要混淆非法情況與錯誤情況之間的區別,後者是必然存在的並且是一定要作出處理的。

(2)使用斷言對函式的引數進行確認。

(3)在編寫函式時,要進行反覆的考查,並且自問:「我打算做哪些假定?」一旦確定了的假定,就要使用斷言對假定進行檢查。

(4)一般教科書都鼓勵程式設計師們進行防錯性的程式設計,但要記住這種程式設計風格會隱瞞錯誤。當進行防錯性程式設計時,如果「不可能發生」的事情的確發生了,則要使用斷言進行報警。

如果要禁用assert(),那就可以如下寫

#define ndebug

#include

這樣就不會呼叫assert()函式了

以上一部分**

編寫strcpy 函式

已知 strcpy 函式的原型是 char strcpy char strdest,const char strsrc 其中 strdest 是目的字串,strsrc 是源字串。1 不呼叫c c 的字串庫函式,請編寫函式 strcpy char strcpy char strdest,const c...

編寫strcpy函式

char strcpy char strdest,const char strsrc 2 strcpy能把strsrc的內容複製到strdest,為什麼還要char 型別的返回值?答 為了實現鏈式表示式。2分 例如 int length strlen strcpy strdest,hello wor...

用C 編寫strcpy函式

已知strcpy函式的原型是 char strcpy char strdest,const char strsrc 1.不呼叫庫函式,實現strcpy函式。2.解釋為什麼要返回char 解說 1.strcpy的實現 char strcpy char strdest,const char strsrc...