当函数发现字符串中如果有一个地方由一个或多个连续的空格组成,就把它们改成单个空格字符。

/****************************************
*  File Name  : deblank.c
*  Creat Data : 2015.1.19
*  Author     : ZY
*****************************************/

/*当函数发现字符串中如果有一个地方由一个或多个连续的空格组成,就把它们改成单个空格字符。
注意当你遍历整个字符串时要确保它以NUL字符结尾*/

#include <stdio.h>
void deblank( char string[],int n )
{
	int i,j,k,count = 0;
	for( i = 0;i < n;i++ )
	{
		if( ' ' == string[i])
		{
			for( j = i+1;j < n;j++ )
			{
				if( ' ' == string[j])
					count++;
				else 
					break;
			}
			if( count>0 )
			{
				for( k = i+count+1;k < n;k++ )
				{
					string[k-count]=string[k];
				}
				string[n-count]='\0';
			}
			count = 0;			
		}	
	}
}

int main()
{
	char arr[] = {"1  2345  67"};
    deblank(arr,sizeof(arr)/sizeof(arr[0]));
	printf("%s\n",arr);
	return 0;
	
}





/****************************************
*  File Name  : deblank.c
*  Creat Data : 2015.1.19
*  Author     : ZY
*****************************************/

/*当函数发现字符串中如果有一个地方由一个或多个连续的空格组成,就把它们改成单个空格字符。
注意当你遍历整个字符串时要确保它以NUL字符结尾*/

#include <stdio.h>

void deblank( char *s )
{
	char *p = s;
	char ch[100] = {0};     //临时数组
	char *q = ch;
	while(*p != '\0')
	{
		if(*p != ' ' )      //如果不是空格临时数组保存字符
		{
			*q = *p;
			p++;            //后移
		}
		else                //如果是空格
		{
			*q = *p;        //保存一个空格
			while(*p == ' ')//让指针移动到不是空格的位置,跳过多余的空格
			{
				p++;   
			}
		}
		q++;                //临时数组指针后移
	}
	q = ch;
	while(*q != 0)           //把临时数组里的元素,拷贝到原来的字符数组里
	{
		*s++ = *q++;
	}
	*s = '\0';               //最后一个元素结束符

}
int main()
{
	char arr[] = {"1  2345  67"};
    deblank(arr);
	printf("%s\n",arr);
	return 0;
	
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值