回复 10楼 杭01
.....我刚学三个月 我想说... 你写的我基本都看不懂啊啊啊啊TT
2016-02-11 23:34
2016-02-12 07:45
char *s = "abcde";这里字符串s的值是"abcde",反序后的字符串是:
char *d = "edcba";将它们放在一起,配上所在位置就是:
/* a b c d e * e d c b a * 0 1 2 3 4 */可以看到,本来处在[4]的'e'跑到了[0],本来处在[3]的'd'跑到了[1],[2]的'c'没变,[1]的'b'跑到了[3],[0]的'a'跑到了[4]
d[i] = s[strlen(s)-i]然后就可以写出程序了。
程序代码: char* strrev(char* s) {
/* h指向s的头部 */
char* h = s;
/* t指向s的尾部 */
char* t = s + strlen(s);
char ch;
/* 当h和t未重合时,交换它们所指向的字符 */
while(h < t) {
ch = *h;
*h++ = *t; /* h向尾部移动 */
*t-- = ch; /* t向头部移动 */
}
return s;
}

2016-02-12 17:58