| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 476 人关注过本帖
标题:有人会吗?教教我~~
只看楼主 加入收藏
yjj598889481
Rank: 1
等 级:新手上路
帖 子:57
专家分:2
注 册:2011-4-4
结帖率:100%
收藏
 问题点数:0 回复次数:8 
有人会吗?教教我~~
编写函数void fun(char  *str)实现删除字符串中的所有*号。例如字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:ABCDEFG。(必须用指针实现)
搜索更多相关主题的帖子: 字符串 
2011-05-02 11:52
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
程序代码:
//usage: delstar(text)
void delstar (char *text) {
        char *p;
        while(*text) {
                if(*text=='*') {
                        p=text;
                        while(*p) {
                                *p=*(p+1);
                                p++;
                        }
                text--;
                }
        text++;
        }
}

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-05-02 12:14
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
我也写一个玩玩,其实和楼上的一样:
程序代码:
void fun(char *str)
{
    if (str) {
        const char *p;
        for (p = str;; ++p) {
            while (*p == '*') ++p;
            *str++ = *p;
            if (*p == '\0') break;
        }
    }
}


额……刚才没仔细读题,改改。
越写越错,还是用老的吧……

[ 本帖最后由 pangding 于 2011-5-2 13:56 编辑 ]
2011-05-02 13:26
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
#include <stdio.h>

void fun(char  *str)
{
    int i = 0, j = 0;

    for (i = 0; str[i]; i++)
    {
        if (str[i] != '*')
        {
            str[j++] = str[i];
        }
    }

    str[j] = 0;

    printf("%s\n", str);
}

int main(void)
{
    char s[] = "****A*BC*DEF*G*******";
    fun(s);
    return 0;
}

我就是真命天子,顺我者生,逆我者死!
2011-05-02 13:37
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
楼主说了要用指针~
2011-05-02 13:42
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
指针已经被你写过了啊,没的写了..

我就是真命天子,顺我者生,逆我者死!
2011-05-02 13:50
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
这么短的小程序还写出了个 bug……现在也不知道修善了没有~
2011-05-02 13:52
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:0 
void f(char *a)
{char *p;
for(p=a;p<a+strlen(a);p++)
if(*p!='*')
printf("%c",*p);
}
main()
{char *a;
a=(char *)malloc(100);
gets(a);
f(a);
getch();
}
2011-05-02 14:23
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
你这有点麻烦
程序代码:

#include<stdio.h>
#include <math.h>
void main()
{
    char p[] = "s**y6***d";
    int n = 0;
    for(int i = 0;p[i];i++)
    {
        if(p[i]!='*')
            p[n++] = p[i];       
    }
    p[n] = '\0';
    printf("%s\n",p);
    return ;
}
这是最简单的方法了

                                         
===========深入<----------------->浅出============
2011-05-02 16:55
快速回复:有人会吗?教教我~~
数据加载中...
 
   



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

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