#include <stdio.h>
int strlen(char *src)
{
int ret = 0;
if(src == NULL){
printf("args error\n");
return -1;
}
while(src[ret])ret++;
return ret;
}
void swap(char **p,char **q)
{
while(*p < *q){
**p ^= **q;
**q ^= **p;
**p ^= **q;
(*p)++;
(*q)--;
}
}
void swap1(char *p,char *q)
{
while(p < q){
*p ^= *q;
*q ^= *p;
*p ^= *q;
p++;
q--;
}
}
char *chang_word_position(char *p)
{
char *a,*b,*tmp;
if(p == NULL){
printf("input args error\n");
return NULL;
}
a = p;
b = p + strlen(p) - 1;
swap(&a,&b);
//swap1(a,b);
a = b = p;
#if 1
while(*tmp){
while(*b != ' ' && *b) b++;
//将b指针向后走,遇到空格或者'\0'停下
tmp = b;
//将上述b以后的的位置赋值给tmp临时保存起来
b--;
//b向前移动一个字节
swap(&a,&b);
//将a b地址种的值进行位置交换
while(*tmp == ' ')tmp++;
//如如果tmp在空格的位置,将tmp向后移动
a = b = tmp;
//将a b的指针赋值为tmp的位置
}
#else
while(1){
while(*b != ' ' && *b) b++;
tmp = b;
b--;
swap(&a,&b);
if(*tmp == '\0') break;
while(*tmp == ' ')tmp++;
a = b = tmp;
}
#endif
}
#include <stdio.h>
int main(int argc, const char *argv[])
{
char a[100] = {0};
printf("please input string > ");
scanf("%[^\n]",a);
chang_word_position(a);
printf("a = %s\n",a);
return 0;
}
版权声明:本文为Linux_zhicheng原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。