| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2219 人关注过本帖
标题:输入一串字符,去掉字符串中多余的空格(连续空格中自保留一个)
只看楼主 加入收藏
离开天空的云
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:110
专家分:198
注 册:2011-8-12
结帖率:100%
收藏
 问题点数:0 回复次数:0 
输入一串字符,去掉字符串中多余的空格(连续空格中自保留一个)
代码如下:
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include<Windows.h>
int main(void)
{
     void cl(char *a);
     int  n;
     char *a;
     printf("输入欲处理的字符串长度: ");
     scanf("%d",&n);
     if((a=(char *)malloc((sizeof(char)*n)+1))==0)
     {
         printf("Malloc error!");
     }
     printf("输入欲处理的字符串:\n");
     fflush(stdin);                            //清空流
     gets(a);
     cl(a);
     printf("未处理之前长度为:%d\n",strlen(a));
     printf("处理后长度为:%d\n",strlen(a));
     printf("处理后字符串:\n%s",a);
     getch();
     return 0;
}
void cl(char *a)
{
    int f,i,qj,kg=0,cx;
    for(f=0;a[f]!='\0';f++)
    {
        if(a[f]==' ')
        {
            kg++;
        }
        else
        {
            if(kg>1)
            {
                for(qj=(f-kg)+1,i=f,cx=qj;a[i]!='\0';qj++,i++)
                {
                    a[qj]=a[i];
                    a[i]=' ';
                }
                kg=0;
                f=cx;
            }
            else
                kg=0;
        }
    }
    for(f=(strlen(a)+1);a[f]==' '||a[f]=='\0';f--)
    {
        ;
    }
    if(a[f]!=' '&&a[f]!='\0')
    {
        a[f+1]='\0';
    }
}  
没写注释将就将就看吧...
问题是输入一个字符串后(中间含有连续空格,单个空格不做处理)处理后空格调到字符串后面了 本来用这段语句
for(f=(strlen(a)+1);a[f]==' '||a[f]=='\0';f--)
    {
        ;
    }
    if(a[f]!=' '&&a[f]!='\0')
    {
        a[f+1]='\0';
    }
来把尾部的空格从有效字符开始截断  可是失败了...好像就是这段出了问题 俺要睡觉了 明天我在看看 嘿嘿..大家帮忙看看啊!! 谢啦
搜索更多相关主题的帖子: include 字符串 
2011-12-28 20:41
快速回复:输入一串字符,去掉字符串中多余的空格(连续空格中自保留一个)
数据加载中...
 
   



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

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