#include<stdio.h>
#include<string.h>
int main()
{
char str[100] = "i am from shanghai";
char *p1 = str;
char *p2 = str + strlen(str) -1;
char *p3 = NULL;
char tmp;
while(p1 < p2) //将整个字符串逆序排列。
{
tmp = *p1;
*(p1++) = *p2;
*(p2--) = tmp;
}
puts(str);
//下面进行逐个单词的逆序排列
p1 = str;
p2 = str;
while(*p2)
{
if(*p2 == ' ')
{
p3 = p2 - 1;//单词的末尾,空格前第一位非空格字符
while(p1 < p3)
{
tmp = *p1;
*(p1++) = *p3;
*(p3--) = tmp;
}
p1 = p2 + 1;//重置p1到下一个单词的开头
}
p2++;
}
p3 = p2 - 1;
while(p1 < p3) //单p2扫描到最后一个单词时,后面不是空格而是'0',会跳过循环交换,所以需额外循环最后一个单词。
{
tmp = *p1;
*(p1++) = *p3;
*(p3--) = tmp;
}
puts(str);
return 0;
}
用指针将英文字符串倒序排列。
最新推荐文章于 2023-10-11 23:07:38 发布