7

问答题 7 /85

实现字符串反转的c库函数 char* strrev(char* string)

注1:不可利用其他库函数,算法尽量高效、占用空间少。

参考答案

char* strrev(char* s)
 {
     /* h指向s的头部 */
     char* h = s;    
     char* t = s;
     char ch;
     /* t指向s的尾部 */
     while(*t++){};
     t--;    /* 与t++抵消 */
     t--;    /* 回跳过结束符'\0' */
     /* 当h和t未重合时,交换它们所指向的字符 */
     while(h < t)
     {
         ch = *h;
         *h++ = *t;    /* h向尾部移动 */
         *t-- = ch;    /* t向头部移动 */
     }
     return(s);
 }