#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);
}
将一个字符串按照单词逆转
最新推荐文章于 2022-12-16 19:25:14 发布