C语言显示字符串倒序

倒序字符串的方法很多,这里给出常见的两种

1.倒序字符串指针法

void reverse_string(char *arr) 
{
	int len = strlen(arr);
	char* left = arr;					//指向头部的指针
	char* right = arr + (len - 1);		 //指向尾部的指针
	char temp;
	while(left < right)
	{	//使用中间变量进行两个字符的交换
		temp = *left;
		*left = *right;
		*right = temp;
		left++;				//头指针往后走
		right--;			//尾指针往前走
	}
}
int main()
{
	char arr[] = "abcdefg";
	reverse_string(arr);
	printf("%s", arr);		//gfedcba
	return 0;
}

2.倒序字符串递归法(两端的字符交换加上中间字符串的逆序)

#include <stdio.h>
#include <string.h>
void reverse_string(char* arr)
{
	int len = strlen(arr);
	char temp = *arr;		    //1.先将首字符放到中间变量
	*arr = *(arr + len - 1);	//2.尾字符放到首字符的位置
	*(arr + len - 1) = '\0';	//3.把'\0'放到尾字符的位置,方便递归时方便计算字符串长度
	if (strlen(arr+1) >= 2)
	{
		reverse_string(arr + 1);/*4.首指针++,指向第二个字符,使用递归,如果剩余字符串的长度小于2,因为一个字符就没有交换的必要,就退出递归*/
	}
	*(arr + len - 1) = temp;	//5.最后把中间变量中存的原来首个字符放到尾部
}
int main()
{
	char arr[] = "abcdefg";
	reverse_string(arr);
	printf("%s", arr);		//gfedcba
	return 0;
}

运行结果:

更多推荐

C语言实现字符串倒序