hello world I am c_player >> c_player am I world hello
如果将转换后的字符串中的每个单词进行反转得到
reyalp_c ma I dlrow olleh
可以看到此时的字符串正好是原字符串整体的反转由此可以得到思路
先将原字符串中每个单词进行反转,然后对其整体在进行反转,便可以得到目标串。
代码:
void work(char *str, int len)
{
char *p, *q;
p = str;
q = str + len - 1; //指向单词末尾
while((p-q) < 0)
{
char tmp ;
tmp = *p;
*p = *q;
*q = tmp;
p++;
q--;
}
}
void fun(char *str)
{
int len = strlen(str);
char *p = str;
char *tmp;
tmp = p;
int i;
while(*p != '\0') // 对出去最后一个单词外的单词进行反转
{
if(*p == ' ')
{
i = p - tmp;
work(tmp,i); //进行反转的函数
tmp = p + 1;
}
p++;
}
work(tmp,p-tmp); //对最后一个单词进行反转
work(str,len); //对整个字符串进行反转
}
int main(int ac, char **av)
{
char a[100] = "hello world I am c_player";
printf("a[]:%s\n",a);
fun(a);
printf("later:%s\n",a);
}
效果