//第一步:将整个字符串反转
//第二步:用循环,以空格为分界点,每次反转一个单词
//先定义反转(不带空格的)字符串函数
void reverse(char* s, int begin, int end){
char tmp;
while(begin < end){
tmp = s[begin];
s[begin] = s[end];
s[end] = tmp;
begin++;
end--;
}
}
//反转(带空格的)长字符串函数
char* trans(char* s, int n ) {
reverse(s, 0, n-1); //第一步,将整个字符串反转
int i = 0, j = 0;
while(i < n){
j = i; //不要直接用i来操作,而是用j接收i来操作,
while(j < n && s[j] != ' ')
{ //止于空格,用于将单个单词的大小写对换
if(s[j] >= 'A' && s[j] <= 'Z')
s[j] += 32; //大写换小写
else if(s[j] >= 'a' && s[j] <= 'z')
s[j] -= 32; //小写换大写
++j; //每转换一个字母之后j后移一位
}
reverse(s, i, j-1); //当j指向空格时退出循环,开始反转单词
i = j + 1; //反转完之后,i应该指向下一个单词的第一个字母,也就是空格之后那个字母
}
return s;
}