[問題] loop 終止寫法

作者: bjk (Up2u)   2016-05-08 17:18:36
1:字串複製
void strcpy(char *s, char *d)
{
for (; *d = *s; s++, d++) ;
}
請問字串結尾是/0為什麼可以當終止值呢
我試了一下NULL也可以
for (; '/0'; s++, d++) ;
但我這樣寫就不行
作者: chuegou (chuegou)   2016-05-08 17:21:00
怪怪的 *d = '/0' 這樣嗎?
作者: bjk (Up2u)   2016-05-08 17:32:00
剛剛有好心板友提醒我\0打錯 哈哈for (; '\0' ; s++, d++) 這樣寫就會終止
作者: CP64 (( ̄▽ ̄#)﹏﹏)   2016-05-08 17:39:00
因為 a = b 會回傳 b但是這用法沒看過 字串尾算 false 嗎?訂正 字串尾 -> "\0"
作者: bibo9901 (function(){})()   2016-05-08 18:54:00
'\0' 就是 0
作者: uranusjr (←這人是超級笨蛋)   2016-05-08 18:59:00
正確來說 '\0' 是 (char)0但不管是哪個都會在邏輯運算時 coerce 成 false
作者: stupid0319 (徵女友)   2016-05-08 19:02:00
這寫法很邪魔歪道,還不錯
作者: MOONRAKER (㊣牛鶴鰻毛人)   2016-05-08 23:43:00
阿你持續條件永遠為false當然終止阿

Links booklink

Contact Us: admin [ a t ] ucptt.com