เมื่อวานผมก็อ่านโค้ด string copy ในหนังสือภาษาซีเล่มนึง โค้ดนี้เขียนโดยใช้ใช้พอยท์เตอร์ (เพราะมันอยู่ในบทเรื่องพอยท์เตอร์) โค้ดในหนังสือตอนแรกออกมาเป็นแบบนี้ครับ
void strcpy(char *s, char *t) {while((*s = *t) != '\0') {s++;t++;}}
ไอ้คนอย่างผมก็เลยนั่งเขียนให้มันเหลือแค่บรรทัดเดียวไอ้ตรงวน while โค้ดผมได้ออกมาแบบนี้ครับ
void strcpy(char *s, char *t) {while((*s++ = *t++) != '\0');}
แฮ่ ในที่สุดมันก็เหลือบรรทัดเดียว ซึ่งพอผมอ่านหนังสือต่อไปมันก็ลดรูปมาเหลือเท่าที่ผมเขียนครับ
แต่ยังไม่หมด ตัวอย่างต่อมามันดันเขียนลูปได้สั้นกว่านี้อีก!!!
void strcpy(char *s, char *t) {while(*s++ = *t++);}
โห มันใช้ความบังเอิญที่ว่า character constant '\0' ดันมีค่าเป็น 0 พอดีมาเป็นเงื่อนไขในการเช็ค
สุดยอดไปเลยหวะ ชอบๆ
ก็เลยต้องมาเขียนบล็อกเก็บไว้หน่อย :)
No comments:
Post a Comment