码迷,mamicode.com
首页 > 其他好文 > 详细

删除字符串中的空格

时间:2016-10-28 11:46:11      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:最好   解决方案   指针   成功   调试过程   思路   时间   put   调试   

咋一看觉得很简单,其实自己做也花了些时间。同样,仅仅是删除空格并输出的话很简单。而将空格删除再存储字符串就没那么简单了。

首先,贴上删除空格并输出字符串的程序如下,比较简单,不多做介绍。

/**************删除空格并打印***************/
void print_del_spac(char *p1)
{
    while(*p1 != \0)
    {
        if(*p1 !=  )
            putchar(*p1);
        p1++;
    }
    putchar(\n);
}

其次,贴上删除空格并存储新的字符串的程序如下:

/***************删除空格并储存**************/
void
delete_space(char *p) { int i,space_count=0; int len = strlen(p); for(i=0; i<len; i++) { if(*(p+i) == ) //空格计数 space_count++; if (space_count != 0) //空格出现后后面的字符如何处置 *(p+i+1-space_count) = *(p+i+1); //这个很关键的一个公式,一个字符前面出现了几个空格就要往前移动几个空格,不容易想到啊,我还是很有灵感地 } for(; space_count>0; space_count--) //字符串的最后几位赋值为空格 p[len-space_count] = ; }

最后,分析一下答案给出的解决方案

/*************答案给出的解决方案************/
void delspace(char *p1)
{
    char *p2;
    while (*p1 != \0)
    {
        if (*p1 ==  )
        {
            p2 = p1;
            while(*p2 != \0)  //遇到一个空格,就把后面的字符全往前移动一位,所以要循环“空格个数”次才能完全移位成功
            {
                *p2 = *(p2+1);  //用了另一个指针p2,不打乱p1的挨个按顺序检查
                p2++;
            }
            p1--; //抵消下面的p1++
        }
        p1++;
    }
}

 

这个方法思路比较清晰,亲测可行,但是字符串很长且空格很多的时候,循环的次数就比较多了。不如我的方法快捷,一次就搞定。但是我的方法在实际调试过程中,自己也容易蒙。调试中也有了一点心得,对于字符串整体要改动的话,最好在监视窗口监视整个字符串(即指向字符串的指针)即可,这样就能看到整体字符串的变化了;否则一个个看字符的变化,自己也记不住,而且容易搞乱搞混。

 

删除字符串中的空格

标签:最好   解决方案   指针   成功   调试过程   思路   时间   put   调试   

原文地址:http://www.cnblogs.com/TomLily/p/6007115.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!