hello world -> olleh dlrow
char* ReverseSWord(char* t){//给头地址返回尾地址-1 找到空格说明一个单词结束 找到\0说明到末尾 还需要注意的是 这里返回的是地址值 因此返回值类型应该是char*
while (*t != ' '&& *t != '\0'){
t++;
}
return t - 1;
}
void ReverseWWord(char* t, char* w){//给定头地址 尾地址 依次交换 (因为通过地址修改对应位置的数据 因此用到字符数组)
char c;
while (t < w){
c = *t;
*t = *w;
*w = c;
t++;
w--;
}
}
void ReverseWord(char* s){//给定字符串 通过调用得到一个单词的尾地址 通过调用使单词相应顺序调换
//然后将头地址后移 单词尾地址+1个单位 (+1 是因为 返回得到的尾地址-1)
while (*s != '\0'){
char* w = ReverseSWord(s);
ReverseWWord(s, w);
s = w + 1;
while (*s == ' '){//过滤空格 一旦遇见空格就把字符串首地址后移
s++;
}
if (*s == '\0'){//当首地址取*已经是\0说明字符串结束 跳出
break;
}
}
}