递归实现将参数字符串中的字符反向排列,要求不能使用C函数库中的字符串操作函数

<span style="font-size:18px;">#include<stdio.h>
void reverse_string(char *string)
{
	int len=0;<span style="white-space:pre">		</span>//strlen()的实现
	char*q=string;
	while(*q != '\0')
	{
		q++;
		len++;
	}
	if(len<=1)
		return;
	else
	{</span>
<span style="font-size:18px;"><span style="white-space:pre">		</span>int tmp=string[0];<span style="white-space:pre">		</span>//递归实现的字符串翻转
		string[0]=string[len-1];
		string[len-1]='\0';
		reverse_string(string+1);
<span style="white-space:pre">		</span>//reverse_string(string++);这样写是错误的,下一次递归调用时没有将下一个字符的地址传过去且当下次返回来时string已经发生改变
<span style="white-space:pre">		</span>//reverse_string(++string);这样写也是错误的,虽然下一次递归调用时将下一个字符的地址传过去了,但是当下次返回来时string也已经发生了变化
		string[len-1]=tmp;
		
	}
}
int main()
{
	char p[]="bit-tech";
	reverse_string(p);
	printf("%s\n",p);
	return 0;
}</span>

你可能感兴趣的:(递归实现将参数字符串中的字符反向排列,要求不能使用C函数库中的字符串操作函数)