去掉字符串中的所有空格

一、题目要求

编写函数,要求去掉字符串中的所有空格

二、问题分析

根据题目要求,首先我们应该清楚这个题可以有好几种方法来解决,最先应该想到用数组。
方法(1):
定义一个指针遍历整个字符串,若该指针遍历到的字符不是空格的话,就将该字符放到一个临时的数组里,知道遇到'\0'为止,那么这个临时的数组中存放的就是去掉所有空格的字符串,然后再将临时的数组拷贝回原字符串数组。函数代码如下所示:
#include<stdio.h>
//删除字符串中的空格
char *delete_space(char *str)
{
	char *p = str; //遍历字符串的指针
	char tmp[257] = "";//创建临时数组
	char *s = tmp;

	while(*p!=0)
	{
		if(*p!=' ')
		{
			*s = *p;
			s++;
		}
		p++;	
	}
	*s = 0;//添加结束标志

        strcpy(str,tmp);//将其去掉空格的临时数组拷回原字符串数组

	return str; 
}
方法(2):

从字符串开头开始找,找到空格就将后面的字符向前逐个移动,直到字符串结束为止。代码如下:

#include<stdio.h>
char *delete_space(char *str)
{
	char *p=str;

	while(*p!=0)    //没有结束,循环
	{
		if(*p==' ')  //遇到空格处理
		{
			char *q=p;//从空格处开始

			while(*q!=0) //直到末尾的所有字符
			{
				*q=*(q+1); //逐次前移
				q++;      //每移一个字符,指针加1,准备移下一个字符
			}
		}  
		else        //当前字符不是空格
		{
			p++;  //指针后移,指向待检查的新字符
		}
	}
	return str; 
}

int main()
{
	char str[] = "hello wor l d   ";
	printf("%s\n",delete_space(str));
        return 0;
}
还有多种方法,这里就介绍最常见的两种,比较简单,都是简单易懂的。

三、总结

这个问题是比较简单的,虽然简单,但是不一样的方法效率都不同。学习编程还是要从基础做好。欢迎大家批评建议。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值