C语言实现单词位置倒置,不改变单词结构
先全部倒置,再分别对每个单词倒置
#include <stdio.h>
#include <string.h>
char * fun(char *str)//翻转单个单词
{
char *ptr, *qtr;
char tmp;
qtr = str;
while(*str != ' ')
{
str++;
}
str--;
ptr = str;
while(ptr > qtr)
{
tmp = *ptr;
*ptr = *qtr;
*qtr = tmp;
qtr++;
ptr--;
}
while(*ptr != ' ')
{
ptr++;
}
ptr++;
return ptr;
}
void inverse(char *p,int len)
{
char *ptr;
char *qtr, *str;
char tmp;
ptr = p;
qtr = (p+len-1);
while(qtr > ptr)
{
tmp = *ptr;
*ptr = *qtr;
*qtr = tmp;
ptr++;
qtr--;
}
str = p; //全部倒置
ptr = fun(str);
ptr = fun(ptr);
ptr = fun(ptr);
}
int main(void)
{
char str[128] = "I am from shanghai";
int len = strlen(str);
inverse(str,len);
printf("%s\n",str);
return 0;
}
可以加上一条控制语句判断空格个数实现通用化
本文介绍了一种使用C语言实现单词位置倒置的方法,通过先整体倒置字符串,然后分别倒置每个单词来实现,适用于多种字符串处理场景。
2523

被折叠的 条评论
为什么被折叠?



