倒叙打印一个字符串

先上代码:

#include<stdio.h>
#include<stding.h>

void print(char arr[])
{
	int len = strlen(arr);
	char* left = arr;
	char* right = arr + len - 1;
	while (left < right)
	{
		char tmp = *left;
		*left = *right;
		*right = tmp;
		left++;
		right--;
	}

}
int main()
{
	char arr[10001] = { 0 };
	while (gets(arr))
	{
		print(arr);
		printf("%s\n", arr);
	}
	return 0;
}

代码思路:

首先定义一个char类型的数组,给它初始化为0。利用while语句进行循环输入,这样可以多次输入,不用每次输入一个字符串都要重新运行一遍代码。

因为我们逆转的是字符串,字符串中可能会有空格,使用scanf进行输入的时候,当scanf语句遇到空格时,可能会停止,因此我们使用更简洁更方便的gets函数进行输入,gets函数的使用需要包含头文件也是#include<stdio.h>。while循环中,我们定义一个函数print来实现字符串倒叙。

我们将数组arr传参传过去,用strlen求出字符串的长度,strlen需要包含头文件#include<string.h>.

求出字符串长度后,我们使用字符指针指向字符串的起始位置和末尾位置,分别用left和right表示,两个字符指针分别为:

char* left = arr;
char* right = arr + len - 1;

char* left所指向的位置是字符串开始,而元素名代表首元素的地址。

char* right所指向的位置是字符串末尾,用首元素地址加上字符串长度后,会多出一个字符的位置,再减去1就是末尾位置。

让left和right的值进行交换后left++,right--。这样循环进行下去,当left==right时,所有元素交换完成,字符串就完成了逆转。因此我们使用while循环,判断条件为left<right,当left=right时,循环停止。定义一个char tmp用于元素的交换。

char tmp = *left;
*left = *right;
*right = tmp;

 交换完成后left++,right--。

left++;
right--;

 最后使用printf函数打印字符串,使用%s即可。至此,代码完成。

  • 16
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值