C语言倒置字符串问题怎么解决

发布时间:2023-02-24 17:47:08 作者:iii
来源:亿速云 阅读:158

这篇文章主要介绍“C语言倒置字符串问题怎么解决”,在日常操作中,相信很多人在C语言倒置字符串问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言倒置字符串问题怎么解决”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

先来看题

C语言倒置字符串问题怎么解决

解题思路

首先我们定义一个字符数组来存放字符串,然后用 gets函数来读入字符串,接下来进行处理阶段,设计一个逆序函数逆序整个字符串,然后再逆序每个单词,最后处理一下细节再输出

解题过程

1.输入

定义完一个字符数组后,因为scanf不吃空格符和换行符,所以这里输入我们采用gets函数来进行读入字符串,看代码????

int main()
{
	char arr[101] = { 0 };
	//输入
	gets(arr);

2.设计逆序函数

看代码

void reverse(char* left, char* right)
{
	assert(*left != NULL);
	assert(*right != NULL);

	while (left < right)
	{
		char tmp = *left;
		*left = *right;
		*right = tmp;
		left++;
		right--;
	}
}

☝️字符串的首尾元素逐个进行交换(不包括\0)☝️

因为传过来的是数组首元素地址,所以我们要用指针变量来接收,为了代码更谨慎,这里使用了assert断言,防止遇到空指针而导致程序运行错误(不能忘记引头文件<assert.h>)

3.逆序整个字符串

	int len = strlen(arr);
	//逆序整个字符串
	reverse(arr, arr + len - 1);

我们使用strlen函数来计算字符串元素个数(不要忘记引头文件<string.h>),然后调用 reverse函数进行整个字符串的逆置。

这里的 arr + len - 1是首元素地址+字符串长度(整数)- 1 得到的是末尾元素的地址如果不 - 1指向的就是 &rsquo;\0&lsquo;了

4.逆序每个单词

char* cur = arr;
	while (*cur)
	{
		//找一个单词
		char* start = cur;
		while (*cur != ' ' && *cur != '\0')
		{
			cur++;
		}
		reverse(start, cur - 1);
		if (*cur == ' ')
		{
			cur++;
		}
	}

定义一个指针变量cur来接收逆序整个字符串之后的arr数组首元素地址,然后如果cur指向的字符不是&rsquo;\0&rsquo;的话就进入循环,然后再定义一个指针变量start来接收每个单词的首元素地址,然后进入循环判断如果cur指向的不是空格或者&rsquo;\0&rsquo;就往后跳一个字符,直到cur指向的是空格或者&rsquo;\0&lsquo;了,就说明已经遍历完确认了一个单词,然后进入reverse函数 来逆序单词(cur - 1 是因为如果不 -1,cur指向的是空格或者&rsquo;\0&lsquo;

最后如果cur指向的是空格而不是&rsquo;\0&lsquo;就说明还没有结束,还有单词没有逆序完,往后跳一个字符循环继续

源码

#include<stdio.h>
#include<string.h>
#include<assert.h>

void reverse(char* left, char* right)
{
	assert(*left != NULL);
	assert(*right != NULL);

	while (left < right)
	{
		char tmp = *left;
		*left = *right;
		*right = tmp;
		left++;
		right--;
	}
}
int main()
{
	char arr[101] = { 0 };
	//输入
	gets(arr);
	//处理
	int len = strlen(arr);
	//逆序整个字符串
	reverse(arr, arr + len - 1);
	//逆序每个单词
	char* cur = arr;
	while (*cur)
	{
		//找一个单词
		char* start = cur;
		while (*cur != ' ' && *cur != '\0')
		{
			cur++;
		}
		reverse(start, cur - 1);
		if (*cur == ' ')
		{
			cur++;
		}
	}
	//打印
	printf("%s\n", arr);

	return 0;
}

到此,关于“C语言倒置字符串问题怎么解决”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

推荐阅读:
  1. C语言中经典的算法有哪些
  2. c语言内联汇编的概念是什么

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c语言

上一篇:Java LockSupport常用方法有哪些

下一篇:Rollup入门实例代码分析

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》