2012-03-20 171 views
-3

作爲學習技術,我想使自己的下列字符串函數的副本我自己的strcpy函數

char * mystrcpy(char *a, char *b); 
// string copy. destroys a but not b. 
// identical to strcpy in <string.h> 
// running time O(mystrlen(b)) 

因爲string a是我來到這個

char * mystrcpy(char *a, char *b){ 
a = b; 
return a; 

} 

在記憶中的一個隨機查克林我想只分配給string b ...我的解釋是否正確?

+4

您至少需要**嘗試**。我們不是來爲你做功課的。寫一些你認爲可能有用的代碼,如果你遇到困難,請回過頭來問一些具體的問題。 – 2012-03-20 14:56:23

+0

@GrahamBorland:儘管您的評論通常是真實的,但OP明確指出了他打算做的事情並詢問具體的問題。他不是要求某人爲他做功課。國際海事組織這是一個有效的問題:\ – amit 2012-03-20 14:59:04

+3

請不要使這種方法到你的家庭作業[你的M.O.](http://stackoverflow.com/questions/9771624/introduction-to-array)在這裏。試着自己回答這個問題。告訴我們你試過的東西。即使它完全和完全錯誤。 – Bart 2012-03-20 14:59:32

回答

2

使用a[i]訪問字符串中的特定字符[索引0​​],就像數組一樣。 [請記住,在C中,一個字符串實際上是一個數組char s]。

您應該迭代字符串,直到您「看到」一個'\0' char - 它指示字符串的結尾。

是的,與字符operator<比較它們的ASCII值 - 這可能是你需要的。

+0

說我有'char * u =「bbcdef」;'如果我想訪問'b'我會做你[0]? – Thatdude1 2012-03-20 15:45:46

+0

@Beginnernato:是的,您可以使用'u [0]'獲得第一個'b'。請注意,因爲你在這裏的字符串是一個字符串文字,你只能讀'u [0]'而不能改變它。 – amit 2012-03-20 15:47:10

+0

@Beginnernato'* b!='\ 0'' [在循環的停止條件中]僅檢查數組中的第一個元素,您可能正在尋找'b [i]!='\ 0''。同樣,在循環的第一次檢查中:'(i> strlen(a)'你需要'<=',記住數組[和字符串]從0開始,而不是從1開始。 – amit 2012-03-20 16:23:17