2011-11-01 60 views
3

我正在審查庫函數strcpy的可能實現方法。它是:strcpy:執行方法

void strcpy(char *src, char *dest) 
{ 
while (*dest++ = *src++) 
      ; 
} 

這怎麼可能沒有的'\0'檢查工作嗎?

+0

如果* src ==「\ 0」它會結束時。不是嗎? – lc2817

+1

您將變量切換爲正確的,但對於標準庫,參數應該按照'dest,src'的順序。這就是他們爲'strcpy','strcat','memcpy','memmove'等做的。 –

+1

另外,你應該使'src'成爲'const char *'來表示它不會被寫入。 –

回答

6

*dest++ = *src++的結果是*src的值在src的增量之前。如果此值爲\0,則循環終止。

+0

Ya正確...更改了..謝謝 –