去除字符串前后和中间多余的空格

笔试是一紧张好像写的有问题,回来后又自己写了下。

#include "iostream"
#include "string.h"
using namespace std;

void removeBlank(char* str)
{	
	int len=strlen(str);
	bool isEnd=false;//记录是否到了字符串的结尾
	int i;

	for(i=0;i<len;i++)
	{
		while(str[i]==' ' && str[i]!='\0')
			i++;
		if(i==len)
			isEnd=true;
		//cout<<i;   测试用
		while(str[i]!=' ' && str[i]!='\0')
		{
			cout<<str[i];
			i++;
		
		}
		if(!isEnd)
		cout<<" ";
	}
}


int main(){
	char str[]="  You  like    china.  ";
	removeBlank(str);
	cout<<endl;
	return 0;
}
我也看了下网上别人的代码,感觉这个也挺好,就参考下 点击打开链接


    #include<stdio.h>

    #include<string.h>

     

    void removeExtraPalce(char * str);

     

    main(){

        char * str = " I like http://hi.baidu.com/mianshiti ";

        removeExtraPalce(str);

        return 0;

    }

     

    void removeExtraPalce(char * str)

    {

        int i,count=0;

        int length =strlen(str);

        bool begin;

     

        if(str[0] != ' '){

            begin=true;

        }else{

            begin=false;

        }

     

        printf("[");

        for(i=0;i<length;i++){

            //去掉字符串头部空格

            if(str[i]==' ' && !begin){

                if(i<length-1 && str[i+1] !=' '){

                    begin=true;

                }

                continue;

            }

     

            if(begin){

                if(str[i] == ' '){

                    if(i<length-1 && str[i+1] !=' '){

                        //只输出中间的一个空格

                        printf("%c",str[i]);

                        count=0;

                    }

                    count++;

                    continue;

                }

            }

     

            printf("%c",str[i]);

        }

     

        printf("]\n");

    }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值