| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5453 人关注过本帖
标题:一个截取字符串中数字的函数
只看楼主 加入收藏
han2y
Rank: 1
来 自:山东德州
等 级:新手上路
帖 子:175
专家分:0
注 册:2006-5-4
结帖率:100%
收藏
 问题点数:0 回复次数:5 
一个截取字符串中数字的函数

我编写了一个代码,是截取字符串中数字的函数,如输入字符串:ah123hs453sh3k后,应将字符串中的字符“123”变为整数123,“453”变为453,“3”变为3,然后放入另一数组中,我的代码是:
main()
{ char str[10];
int a[10]={0};
int i,j,k,m;
int sum;
int number;
i=0;
j=0,sum=0,number=0;
printf("enter:");
gets(str);
printf("\n");
for(m=0;m<10;m++)
printf("%c",str[m]);

while(*(str+i)!='\0')
{
if(('0'<=(*(str+i)))&&((*(str+i))<='9'))
{ number=*(str+i)-'0';
sum=sum*10+number;
number=0;
}
else
{if(('0'<=(*(str+i-1)))&&((*(str+i-1))<='9'))
{ a[j]=sum;
sum=0;
j++;
}
}
i++;
}
printf("out:");
for(k=0;k<10;k++)
printf("%5d\n",a[k]);
}
运行是不能显示正确结果,请各位高手给看看,哪里出现了错误,

[此贴子已经被作者于2006-6-9 22:54:34编辑过]

搜索更多相关主题的帖子: 函数 数字 字符 
2006-06-09 22:44
han2y
Rank: 1
来 自:山东德州
等 级:新手上路
帖 子:175
专家分:0
注 册:2006-5-4
收藏
得分:0 

我的算法是:取一个字符后,判断它是不是在0至9之间,如果是,就把它变为整数并存入sum中,然后取下一个字符,判断它是不是在0至9之间,如果是,把sum乘10后加上这个数,然后判断下一个字符,如果下一个字符不是在0至9之间,在判断它的上一个字符是不是在0至9之间,如果是,把sum存入另一数组中,后判断下一个字符是不是在0至9之间,如果不是,后判断它的上一个字符是不是在0至9之间,如果不是,则,什么也不做,继续往下走,


2006-06-09 23:15
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
main()
{ char str[10+40];
int a[10]={0};
int i,j,k,m;
int sum;
int number;
i=0;
j=0,sum=0,number=0;
printf("enter:");
gets(str);
printf("\n");
//for(m=0;m<10;m++)不要学谭的坏习惯,难道对
//printf("%c",str[m]);电脑的输入功能不放心

while(*(str+i)!='\0')
{
if(('0'<=(*(str+i)))&&((*(str+i))<='9'))
{ number=*(str+i)-'0';
sum=sum*10+number;
number=0;
}
else
{if(('0'<=(*(str+i-1)))&&((*(str+i-1))<='9'))
{ a[j]=sum;
sum=0;
j++;
}
}
i++;
}
printf("out:\n");
for(k=0;k<j;k++)
printf("%5d\n",a[k]);
}


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-10 03:41
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
回复:(han2y)我的算法是:取一个字符后,判断它是不...
以下是引用han2y在2006-6-9 23:15:20的发言:

我的算法是:取一个字符后,判断它是不是在0至9之间,如果是,就把它变为整数并存入sum中,然后取下一个字符,判断它是不是在0至9之间,如果是,把sum乘10后加上这个数,然后判断下一个字符,如果下一个字符不是在0至9之间,在判断它的上一个字符是不是在0至9之间,如果是,把sum存入另一数组中,后判断下一个字符是不是在0至9之间,如果不是,后判断它的上一个字符是不是在0至9之间,如果不是,则,什么也不做,继续往下走,

算法很不错。以后定义字符数组要“舍得”开辟较大空间,又不挖你的肉。


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-10 03:44
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-10 15:40
sunyang01010
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-6-12
收藏
得分:0 
3L还没有改对,还有错误,假如说那样的话,输出只有第一个数,不会输出后面的数了,因为在第一个数检查之后,整个i不会继续走下去,所以得把得把i++提到前面来,
main()
{ char str[50];
int a[50]={0};
int i=0,j=0,k;
int sum=0;
int num=0;
printf("enter:");
gets(str);
printf("\n");
while(*(str+i)!='\0')
{ i++;
if(('0'<=(*(str+i)))&&((*(str+i))<='9'))
{num=*(str+i)-'0';
sum=sum*10+num;
num=0;
}
else
if(('0'<=(*(str+i-1)))&&((*(str+i-1))<='9'))
{ a[j]=sum;
sum=0;
j++;
}
}
printf("out:\n");
for(k=0;k<j;k++)
printf("%5d",a[k]);
}
2011-06-12 15:37
快速回复:一个截取字符串中数字的函数
数据加载中...
 
   



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

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