| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1575 人关注过本帖
标题:删除字符串空格
只看楼主 加入收藏
hexianqi1994
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2011-8-3
结帖率:86.96%
收藏
已结贴  问题点数:5 回复次数:3 
删除字符串空格
主要是红字部分问题,特别那个将p1++抵消不明白,求详细.
#include <stdio.h>

void delspace(char *p1);

int main(void)
{
    char str[81];
 do
 {
  puts("input a string:");
  gets(str);
  delspace(str);
  puts(str);
  puts("input any char except q to go on.");
  gets(str);
 }
 while(*str != 'q');
 puts("Quit.");
    return 0;
}

void delspace(char *p1)
{
   char *p2;
  while (*p1 != '\0' )
  {
   if (*p1 == ' ')
   {
    p2 = p1;
    while(*p2 != '\0')
    {
     *p2 = *(p2+1);
     p2++;
    }
    p1--; //抵消下面的p1++
   }
  p1++;
  }
}
搜索更多相关主题的帖子: return while input except include 
2011-08-21 18:24
stophin
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:227
专家分:618
注 册:2010-3-26
收藏
得分:5 
比如有aaa  aaa和aaaaaaaa两个字符串p1和p1' ,他们的长度一样,但是前面的字符串有两个空格
现在我们同时对p1和p1'来做deletespace里面的while动作
前三个字符处理方式一样,都是不进入if语句直接p1++
到p1 -> ' '和p1' -> 'a'时有了差异,p1的那个进入if,p1赋值给p2,进入循环,作用是把p1后面的字符串全部前移一位,这样,做完循环后p1变成了aaa aaa,p1指向的是剩下的那个空格;而此时p2没有进入if,而是直接++。如果p1没有--抵消,那么,p1和p1'一样++以后,p1指向空格后面的'a',这样会漏掉一个空格,所以需要加一个++操作。
2011-08-21 19:26
死蜜蜂
Rank: 2
等 级:论坛游民
帖 子:16
专家分:15
注 册:2011-8-16
收藏
得分:0 
这是避免一种有连续空格的情况,因为列入输入是asd  sa时,在第一次检查到空格后,
p2 = p1;
    while(*p2 != '\0')
    {
     *p2 = *(p2+1);
     p2++;
    }
经过这些个语句使得p1指向的就是第二个空格,如果此时没有p1--的语句进行指针后退,则接下来的p1++语句将使p1指向s了,就会导致空格符存在没有消除完全!!
2011-08-21 19:40
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
程序代码:
#include <stdio.h>
void fun(char *s)
{
    char *p = s;
    int i,j,k = 0;
    while(*p)
    {
        if(*p != ' ')
            s[k++] = *p++;
        else
            p++;
    }
    s[k] = '\0';
}
int main()
{
    char s[] = "dsfd sf s d  f";
    fun(s);
    puts(s);
    return 0;
} 

                                         
===========深入<----------------->浅出============
2011-08-21 21:26
快速回复:删除字符串空格
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024985 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved