字符串各单词的反转 -- C语言

思路

我们首先把字符串整个反转,然后在逐个单词反转回来,每个单词通过空格' '分隔开

 

代码实现


int strReverse(char * head, char * tail){
	if(NULL == head || NULL == tail){
		printf("strReverse param error!\n");
		return PARAM_ERR;
	}
	
	char tmp;

	while(head < tail){
		tmp = *head;
		*head = *tail;
		*tail = tmp;

		head++;
		tail--;
	}
	
	return SUCCESS;
}

int strReversWithoutWord (char * str){
	if(NULL == str){
		printf("strReverse param error!\n");
		return PARAM_ERR;
	}

	int len = 0;
	char * head = NULL, * tail = NULL;
	char * p = NULL, * q = NULL;

	/*1. 整个字符串颠倒*/
	len  = strlen(str);
	head = str;
	tail = str + len - 1;
	strReverse(head, tail);
	
	/*逐个单词颠倒回来*/
	p = str;
	while(*p != '\0'){
		head = p;
		q = p;
		while(' ' != *q && '\0' != *q){
			q++;
		}
		tail = q - 1;
		strReverse(head, tail);
		
		p = q + 1;
	}
	
}


void testReverse(void){
	char str[100] = "Feng is from Beijing!";
	char * head = NULL, * tail = NULL;
	int len  = 0;

	printf("\n************  testReverse ************ \n");

	strReversWithoutWord(str);
	printf("Reverse string without word is : %s\n\n", str);

	return;

}

 

代码编译

gcc main.c str.c -g -o a.exe

调试输出


************  testReverse ************

Reverse string without word is : Beijing! from is Feng

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值