| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4462 人关注过本帖
标题:删除多余空格,新手求助!!!
只看楼主 加入收藏
雾雨淼淼
Rank: 2
来 自:甘肃金昌
等 级:论坛游民
帖 子:85
专家分:89
注 册:2010-8-17
结帖率:100%
收藏
已结贴  问题点数:30 回复次数:10 
删除多余空格,新手求助!!!
各位高手,本人编了一段程序,企图实现将输入的一段话之间的多余的空格删除,单词之间只保留一个空格,但是想了好几天,还是有点问题,
程序如下:
# include <stdio.h>
# include <string.h>

void del_space(char *p);
void mygets(char *p);
void myputs(char *p);

void main()
{
   char string[50];char *p;
   p=string;
   printf("本程序负责完成将输入的多余的空格删除\n");
   printf("请输入一段话\n");
   mygets(p);
   printf("您输入的字符串是\n");
   myputs(string);
   printf("OK,剩下的是就交给我了:\n");
   del_space(string);
   printf("删除多余空格后的字符串为:\n");
   myputs(p);
}

void del_space(char *p)
{
   int i,j;
   for(i=0;i<strlen(p)-1;i++)
   {
        if(*(p+i)==' ' && *(p+i+1)==' ')
            for(j=i;j<strlen(p)-1;j++)
                *(p+j)=*(p+j+1);
   }
   *(p+i)='\n';
}

void mygets(char *p)
{
    while(*p=getchar())
        if(*p!='\n')
            p++;
        else
            break;
}

void myputs(char *p)
{
    while(putchar(*p))
        if(*p!='\n')
            p++;
        else
            break;
}
请各位高手百忙之中抽空看看,不吝赐教,在下感激不尽
搜索更多相关主题的帖子: 字符串 
2011-06-10 11:01
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:5 
输入/输出字符串直接调用gets()和puts()即可。

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-06-10 11:14
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:15 
我这里写了3个相应的子程序,你参考一下吧
程序代码:
//删除空格
void delblank (char *str) {
        int i=0,j;
        char *p;

        while(*(str+i)) {
                if(*(str+i)==' ' && *(str+i+1)==' ') {
                        p=str+i+1;
                        j=0;
                        while(*(p+j)) {
                                *(p+j)=*(p+j+1);
                                j++;
                        }
                        *(p+j+1)='\0';
                        i--;
                }
                i++;
        }
}


//输入字符串
程序代码:
void mygets (char *ptr) {
        char ch;
        do {
                ch=getchar();
                *ptr=ch;
                ptr++;
        }while(ch!='\n');
        *ptr='\0';
}


//打印字符串
程序代码:
void myputs(char *ptr) {
        while(*ptr)
                printf("%c",*ptr++);
}

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-06-10 11:22
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:6 
程序代码:
# include <stdio.h>
# include <string.h>
void main()
{
    char str[50] = {0};char *p;
    gets(str);
    p = str;
    int n = 0;
    while(*p)
    {
        if(*p != ' ')
            str[n++] = *p++;
        else
        {
            if(*(p-1) == ' ')
                p++;
            else
                str[n++] = *p++;
        }
    }
    str[n] = '\0';
    puts(str);
  
}
//afds sdfs     sdf  jl 

                                         
===========深入<----------------->浅出============
2011-06-10 11:26
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:1 
回复 4楼 laoyang103
这个好。
不过,貌似忽略了字符串第一个字符是空格的情况吧
2011-06-10 15:25
a373339205
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:30
专家分:134
注 册:2011-6-9
收藏
得分:3 
我的思想是用个定义个变量N来记单词和单词之间的空格,遇到空格时判断是否是1,是的话就跳过这个字符,不是就加1,继续下一个,有一点就是如果遇到了不是空格的字符,要把N清0
2011-06-10 18:04
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
回复 5楼 voidx
voidx兄弟提醒的是 以后注意

                                         
===========深入<----------------->浅出============
2011-06-10 18:09
雾雨淼淼
Rank: 2
来 自:甘肃金昌
等 级:论坛游民
帖 子:85
专家分:89
注 册:2010-8-17
收藏
得分:0 
回复 2楼 ansic
自己练习着编了一下,嘿嘿,班门弄斧
2011-06-11 22:43
雾雨淼淼
Rank: 2
来 自:甘肃金昌
等 级:论坛游民
帖 子:85
专家分:89
注 册:2010-8-17
收藏
得分:0 
果然高手云集,非常感谢
2011-06-11 22:44
雾雨淼淼
Rank: 2
来 自:甘肃金昌
等 级:论坛游民
帖 子:85
专家分:89
注 册:2010-8-17
收藏
得分:0 
回复 3楼 ansic
非常感谢你的三个程序,在下受教了,再次感谢
2011-06-11 22:47
快速回复:删除多余空格,新手求助!!!
数据加载中...
 
   



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

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