删除字符串多余空格

/*
 * removeTheDuplicateSpace.c
 *
 *  Created on: 2013-3-17
 *      Author: ken
 */
#include<stdio.h>
#include<string.h>
#define NUL '\0'

void deblank( char string[])
{
    char dst[64];
    int i = 0,flag = 0;//控制空格字符是否输出
    int dst_index=0;
    while (string[i] != '\0' )
    {   if(string[i] !=' ')// 若不是空格 则复制到输出数组dst中,将flag置1
        {   flag = 1;
            dst[dst_index++]= string[i];
        }
        else
        {
//        	当遇到的字符是空格的时候,将不将这个空格加入到目标数组中,需要判断这个字符的前一个字符是非空字符或者空字符
        	if(flag)// flag=1 说明前一字符为非空格字符
            {   dst[dst_index++] =' ';// 复制一个空格字符
                flag = 0;
            }
        }
        i++;
    }
    dst[dst_index] = '\0';//以'\0'结束字符串
    strcpy(string,dst);// 复制 返回string
}

void deblank( char string[])
{
	//理解的窍门,虽然用的是同一个数组,但是dst将原来的数组进行了修改
	char *dst;
	dst = string;
    int i = 0,flag = 0;//控制空格字符是否输出
    while (string[i] != '\0' )
    {   if(string[i] !=' ')// 若不是空格 则复制到输出数组dst中,将flag置1
        {   flag = 1;
            *dst++= string[i];
        }
        else
        {
//        	当遇到的字符是空格的时候,将不将这个空格加入到目标数组中,需要判断这个字符的前一个字符是非空字符或者空字符
        	if(flag)// flag=1 说明前一字符为非空格字符
            {   *dst++ =' ';// 复制一个空格字符
                flag = 0;
            }
        }
        i++;
    }
    *dst = '\0';//以'\0'结束字符串
}


int main() {
	char str[] = { "I    love          you!" };
	deblank(str);
	printf("\n%s", str);
	return 0;
}

你可能感兴趣的:(删除字符串多余空格)