您的位置:首页 > 其它

将一个字符串按照单词逆转

2016-03-20 23:45 239 查看
#include <stdio.h>

size_t _strlen(const char *str)
{
if(str==NULL ||  *str == '\0') return 0;
size_t count = 0;
while(*str++)
{
count++;
}
return count;
}

size_t _wordlen(const char * str)
{
if(str==NULL ||  *str == '\0') return 0;
size_t count = 0;
while(*str)
{
if(*str==' ') break;
count++;
str++;
}
return count;
}

void reverse_str(char* str,size_t t)
{
if(str==NULL ||  *str == '\0') return;
char* p1=str;
char* p2=str+t-1;
while (p1<p2)
{
*p1=*p1^*p2;
*p2=*p1^*p2;
*p1=*p1^*p2;

p1++;
p2--;
}
}

void reverse_words(char* str)
{
if(str==NULL ||  *str == '\0') return;
reverse_str(str,_strlen(str));

reverse_str(str,_wordlen(str));

while (*str++)
{
if (*str == ' ')
{
reverse_str(str+1,_wordlen(str+1));
}
}

}

void main(void)
{
char words[]="my name is g0;";

printf("%s\n",words);
reverse_words(words);
printf("%s\n",words);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: