牛客网刷题 ——C语言初阶(6指针)——字符逆序

1. 题目描述:字符逆序

牛客网题目链接

将一个字符串str的内容颠倒过来,并输出。

输入描述:

输入一个字符串,可以有空格
输出描述:

输出逆序的字符串
示例1

输入

I am a student

输出

tneduts a ma I

2. 思路

首先字符串逆序,之前就有实现过,这个没啥问题,就是给两个变量,一个从前往后,一个从后往前,互相交换,就把数组逆置了,这个题的点在于,scanf()函数,到空格就结束了,示例2里面就说明了需要有空格并且空格要交换。这里学到了另一个获取输入函数gets(),他获取字符串遇到空格还是会继续,不会停止。

3.代码实现1

c 复制代码
#include<stdio.h>
#include<stdlib.h>
//字符串逆序


void reserveStr(char* str)
{
	int sz = strlen(str);
	int i = 0;
	int j = sz - 1;
	while (i < j)
	{
		char tem = str[i];
		str[i] = str[j];
		str[j] = tem;
		i++;
		j--;
	}
}
int main()
{
	char str[100000] = " ";
	gets(str);
	reserveStr(str);
	printf("%s", str);
	
	
	return 0;
}

4.代码实现2

这里使用下指针

c 复制代码
#include<stdio.h>
#include<stdlib.h>
//字符串逆序
void reserveStr(char* left,char*right)
{
	while (left <right)
	{
		char tem = *left;
		*left = *right;
		*right = tem;
		left++;
		right--;
	}
}
int main()
{
	char str[100000] = " ";
	//scanf("%s", str);//scanf函数有问题,默认读取的时候遇到空格就是结束,所以这里不能使用scanf
	gets(str);//它可以读一个字符串,遇到空格还是会往后走
	reserveStr(str,str+strlen(str)-1);
	printf("%s", str);
	return 0;
}
相关推荐
黑客老李13 分钟前
BaseCTF scxml 详解
开发语言·网络·数据库·python·sql·安全
编程|诗人15 分钟前
Ruby语言的数据库编程
开发语言·后端·golang
SyntaxSage16 分钟前
Ruby语言的学习路线
开发语言·后端·golang
云端 架构师16 分钟前
Ruby语言的并发编程
开发语言·后端·golang
DevOpsDojo17 分钟前
Ruby语言的字符串处理
开发语言·后端·golang
Code花园26 分钟前
Scala语言的循环实现
开发语言·后端·golang
wjs202432 分钟前
AngularJS HTML DOM
开发语言
易雪寒1 小时前
Java大厂面试题之10种分布式ID的生成方案
java·开发语言·分布式
树不懒1 小时前
【js引擎】quickjs 中的两个 proto
开发语言·javascript·原型模式
明天不吃。1 小时前
【JMM】Java 内存模型
java·开发语言