| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1259 人关注过本帖
标题:输入一个字符,将字符串中相同的去掉,这个为什么不行
只看楼主 加入收藏
z839187405
Rank: 1
等 级:新手上路
帖 子:12
专家分:3
注 册:2016-11-28
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:8 
输入一个字符,将字符串中相同的去掉,这个为什么不行
#include<stdio.h>
void delchar (char * s,char ch);
void main ()
{
    char s[80];
    char ch;
    printf("pls input ch:\n");
    ch=getchar();
    printf("pls input s:\n");
    scanf("%s",s);
    delchar(s,ch);

    printf("%s",s);
}

void delchar (char * s,char ch)
{
    int i=0;
    while (* (s+i) !='\0')
    {
        if(* (s+i)=ch)
            * (s+i)=' ';
        i++;
    }
}
搜索更多相关主题的帖子: 字符串 
2016-11-30 09:10
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:8 
void delchar (char * s,char ch)
{
    char *p = s;
    while (*p != NULL)
    {
        if (*p == ch)
        {
            *p = 0;
            strcat(s, p+1);
        }
        else
            p++;
    }
}


[此贴子已经被作者于2016-11-30 11:17编辑过]

2016-11-30 10:58
ldsh304
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:242
专家分:755
注 册:2016-1-18
收藏
得分:0 
回复 2楼 吹水佬
删除连续的一个元素,则不成功,
例如删除"assdf"中的's';
将其修改成这样
程序代码:
void delchar (char * s,char ch)
{
    char *p = s;
    while (*p != NULL)
    {
        if (*p == ch)
        {
            *p = 0;
            strcat(s, p+1);
            p--;//已经删掉ch后,使p指向原来的元素
        }
        p++;
    }
}

2016-11-30 11:15
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
回复 3楼 ldsh304
多谢指正
更正
2016-11-30 11:19
飞翔的豆腐
Rank: 2
等 级:论坛游民
帖 子:1
专家分:12
注 册:2016-11-30
收藏
得分:12 
回复 3楼 ldsh304
请问为什么要再定义一个指针,楼主那样写的根本的错因是什么。
2016-11-30 14:46
z839187405
Rank: 1
等 级:新手上路
帖 子:12
专家分:3
注 册:2016-11-28
收藏
得分:0 
回复 5楼 飞翔的豆腐
你自己看书啊!自己的问题
2016-11-30 16:07
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用飞翔的豆腐在2016-11-30 14:46:38的发言:

请问为什么要再定义一个指针,楼主那样写的根本的错因是什么。

再定义一个活动的遍历字符串指针。
楼主是清空,没有去掉。
2016-11-30 16:10
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
还有错误的语句:
if(* (s+i)=ch)
应该是:
if(* (s+i)==ch)
2016-11-30 16:13
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
回复 2楼 吹水佬
楼主代码里没有包含string.h库,使用strcat会编译报错的,该函数代码可简化如下:
void delchar (char * s,char ch)
{
     int i,j;
     for(i=0,j=0;s[i];i++)if(s[i]!=ch)s[j++]=s[i];;
     s[j]=0;
}

能编个毛线衣吗?
2016-11-30 17:53
快速回复:输入一个字符,将字符串中相同的去掉,这个为什么不行
数据加载中...
 
   



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

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