回复 10楼 杭01
.....我刚学三个月 我想说... 你写的我基本都看不懂啊啊啊啊TT
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; }