#include <stdio.h>
#include <assert.h>
int length(const char *str)
{
int len=0;
assert(str);
while(*str)
{
len++;
str++;
}
return len;
}
void reverse_str(char *start,char *end)
{
while(start<end)
{
char tmp=*start;
*start=*end;
*end=tmp;
start++;
end--;
}
}
char *reverse(char *str)
{
int n=length(str);
char *ret=str; //先将起始位置保存在ret中
char *start=str;
char *end=str+n-1;
reverse_str(start,end);
while(*str)
{
start=str;
while((*str!=' ' )&&(*str!='\0'))
{
str++;
}
end=str-1;
reverse_str(start,end);
if(*str==' ' )
{
str++;
}
}
return ret;
}
int main()
{
char str[]="student a am i" ;
printf( "%s\n",reverse(str));
system( "pause");
return 0;
}
本文出自 “追寻内心的声音” 博客,转载请与作者联系!