3
我正在審查庫函數strcpy
的可能實現方法。它是:strcpy:執行方法
void strcpy(char *src, char *dest)
{
while (*dest++ = *src++)
;
}
這怎麼可能沒有的'\0'
檢查工作嗎?
我正在審查庫函數strcpy
的可能實現方法。它是:strcpy:執行方法
void strcpy(char *src, char *dest)
{
while (*dest++ = *src++)
;
}
這怎麼可能沒有的'\0'
檢查工作嗎?
*dest++ = *src++
的結果是*src
的值在src
的增量之前。如果此值爲\0
,則循環終止。
Ya正確...更改了..謝謝 –
如果* src ==「\ 0」它會結束時。不是嗎? – lc2817
您將變量切換爲正確的,但對於標準庫,參數應該按照'dest,src'的順序。這就是他們爲'strcpy','strcat','memcpy','memmove'等做的。 –
另外,你應該使'src'成爲'const char *'來表示它不會被寫入。 –