| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 597 人关注过本帖
标题:大家帮我看看程序有什么问题(去串中间多余空格)
只看楼主 加入收藏
wszxs26
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-11-5
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
大家帮我看看程序有什么问题(去串中间多余空格)
本程序是为了去掉字符串中间多余空格
错误地方在下面红色字那,while循环回来再求长就变为0
#include <stdio.h>
#include<stdlib.h>
#include <conio.h>
#include<string.h>

/*定义串的结构*/
#define MAXSIZE  256  
typedef struct
{    char  data[MAXSIZE];/*数组存储串*/
     int   Length; /*串的长度*/
}SeqString;


/*求串长*/
int StrLength(char s[])
{
     int i=0;
     while (s[i]!='\0')  
         i++;
     return(i);
}


/*去掉中间多余空格*/
void QuKongGe(char *s){
    int l;/*求数组长度*/
    int k=0;/*记空格的个数*/
    int i=0,j=0;
    while(s[i]!='\0'){
       l=StrLength(s);//循环求长为何第二次就会出现错误
        printf("%d\n",l);
        if(s[i]==' '&&k==0){
            k++;
            i++;
        }else if(s[i]=' '&&k==1){
            for(j=i;j<l;j++){
                s[j]=s[j+1];
            }
            s[j]='\0';
            
        }else{
            k=0;
            i++;
        }
    }
}

void main()
{
    SeqString s;
    printf("请输入字符串:");
    gets(s.data);
    QuKongGe(s.data);
    s.Length=StrLength(s.data);
    printf("字符串长度是:%d\n",s.Length);
    printf("字符串:");
    puts(s.data);
    getch();
}



[ 本帖最后由 wszxs26 于 2010-11-25 21:13 编辑 ]
搜索更多相关主题的帖子: 空格 
2010-11-25 21:09
遮天云
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:农村一小伙
等 级:贵宾
威 望:12
帖 子:1132
专家分:2671
注 册:2010-6-1
收藏
得分:20 
程序代码:
#include <stdio.h>
#include<stdlib.h>
#include <conio.h>
#include<string.h>

/*定义串的结构*/
#define MAXSIZE  256  
typedef struct
{    char  data[MAXSIZE];/*数组存储串*/
     int   Length; /*串的长度*/
}SeqString;


/*求串长*/
int StrLength(char s[])
{ 
     int i=0;
     while (s[i]!='\0')  
         i++;
     return(i);
}


/*去掉中间多余空格*/
void QuKongGe(char *s){
    int l;/*求数组长度*/
    int k=0;/*记空格的个数*/
    int i=0,j=0;

    while(s[i]!='\0')
    {
       l=StrLength(s);//循环求长为何第二次就会出现错误
        printf("%d\n",l);
       /* if(s[i]==' '&&k==0)
        {
            k++;
            i++;
        }*/
       if(s[i]==' ')//改成==
        {
            for(j=i;j<l;j++)
            {
                s[j]=s[j+1];
            } 
            s[j]='\0';
            
        }
        else
        {
            //k=0;
            i++;
        }
    }
}

void main()
{
    SeqString s;
    printf("请输入字符串:");
    gets(s.data);
    QuKongGe(s.data);
    s.Length=StrLength(s.data);
    printf("字符串长度是:%d\n",s.Length);
    printf("字符串:");
    puts(s.data);
    getch();
}


试下
2010-11-26 10:40
wszxs26
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-11-5
收藏
得分:0 
回复 2楼 遮天云
我想去掉的是中间多余的空格,也就是说要保留一个,你的方法把所有的空格都去掉了
谢谢你的帮忙啊
2010-11-26 16:52
wszxs26
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-11-5
收藏
得分:0 
回复 2楼 遮天云
我在你的基础上改了下,居然成功了,谢谢你啊
2010-11-26 16:58
遮天云
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:农村一小伙
等 级:贵宾
威 望:12
帖 子:1132
专家分:2671
注 册:2010-6-1
收藏
得分:0 
呃,汗,不好意思,我没看清题目,以为是要去掉所有的呢
2010-11-26 23:18
快速回复:大家帮我看看程序有什么问题(去串中间多余空格)
数据加载中...
 
   



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

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