1. 程式人生 > >一個10分的實現strcpy函式

一個10分的實現strcpy函式

我們先來看strcpy的原型:

在這裡插入圖片描述 接下來我們自己實現my_strcpy函式:

#include<stdio.h>
#include<assert.h>
char* my_strcpy(char *des,const char *src){   
	assert(src != NULL);                 
	assert(des != NULL);
	while (*des++ = *src++){
		;
	}
	return des;
}
int main(){
	char src[] = "abcde";
	char des[] = "";
	printf("src:%s\n", src);
	printf("des:%s\n", des);
	my_strcpy(des, src);
	printf("複製後的des:%s\n", des);
	return 0;
}

這裡有以下幾個重點即得分點: 1.const關鍵字:保護源字串指向的內容不被改變 2.assert();斷言函式,如果()中條件為假,就列印一條錯誤資訊,並終止程式執行。 它的原型為:#include <assert.h> void assert( int expression ); 3.最關鍵的一點就是它的返回值是char*,一般情況下我們只會想到void,那麼他設定這樣的返回值與void相比好處在於哪裡? 就在於:char*可以實現鏈式訪問,將目標地址返回,這樣的話strcpy函式就可以作為另一個函式的實參了。 我們應該多思考庫函式的原型為什麼這樣寫,這樣也就可以自己完美的實現一個庫函數了。