| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6694 人关注过本帖
标题:删除字符串s中的所有数字字符,再重新输出。
只看楼主 加入收藏
不懂C编程
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2009-10-17
结帖率:100%
收藏
 问题点数:0 回复次数:1 
删除字符串s中的所有数字字符,再重新输出。
求删除had4658gu中的数字字符,得到hadgu.
#include"stdio.h"
char dele(char *s)
{
    int n=0,i;
    for(i=0;s[i];i++)
        if(s[i]>='0'&&s[i]<='9')
            s[n++]=s[i];
        s[n]='0';
        return 1;
}
void main()
{
    char t;
    t=dele("had4658gu");
    printf("%s\n",t);
}
调试没有任何错误,但不能运行。
test.exe遇到问题需要关闭。我们对此引起的不便表示抱歉。如果您正处于进程当中,
信息有可能丢失。
请高手解决这个问题,是代码本身有问题吧,修改一下啊!
搜索更多相关主题的帖子: 字符 输出 删除 数字 
2009-10-18 19:03
hoodlum1980
Rank: 2
来 自:浙江大学
等 级:论坛游民
威 望:2
帖 子:289
专家分:23
注 册:2008-2-24
收藏
得分:0 
回复 楼主 不懂C编程
#include"stdio.h"
char dele(char *s)
{
    int n=0,i;
    for(i=0;s[i];i++)
        if(s[i]>='0'&&s[i]<='9') //这里写的和你的题意要求相反。我看你的意思这里应该是 if( s[i] < '0' || s[i] > '9')
            s[n++]=s[i];
    s[n]='0';  //这里要写'\0'或者直接写0。
    return 1;  //这里的函数返回值我不知道你想干什么。
}
void main()
{
    char t;
    t=dele("had4658gu"); //这里是最关键的错误。!!!因为常量区的字符串是无法修改的!
                           //所以这里应该使用堆,栈,或静态区的空间,而唯独不能使用常量字符串。可以改造如下:

    char buffer[64] = "had4658gu";

    dele(buffer); //这里的buffer位于栈上,可改写。
   
    printf("%s\n",t); //这里你的t经过上面的函数,t=1了,那么你去访问地址为1的数据,当然要出现无法预料的结果了。
}

你的这个函数写的问题好多。我还是按照你的意思把你上面的这些代码重写如下:

<code>
#include <ctype.h>
#include <stdio.h>

char* dele(char *s)
{
    int n=0,i;
    for(i=0;s[i];i++)
        if(!isdigit(s[i]))
            s[n++]=s[i];
    s[n]=0;
    return s;
}

void main()
{
    char *t=NULL;
    char buffer[]="had4658gu";
    t=dele(buffer);
    printf("%s\n", t);
}
</code>

[ 本帖最后由 hoodlum1980 于 2009-10-18 20:34 编辑 ]

my tech blog: /hoodlum1980
2009-10-18 20:26
快速回复:删除字符串s中的所有数字字符,再重新输出。
数据加载中...
 
   



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

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