| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 10713 人关注过本帖
标题:怎样把字符串中连续数字提取并放到一个整形数组中
只看楼主 加入收藏
高达
Rank: 1
等 级:新手上路
威 望:1
帖 子:261
专家分:0
注 册:2006-10-27
收藏
 问题点数:0 回复次数:9 
怎样把字符串中连续数字提取并放到一个整形数组中
怎样把字符串中连续数字提取并放到一个整形数
搜索更多相关主题的帖子: 整形 数字 字符 
2007-01-02 12:36
zbqf109
Rank: 1
等 级:新手上路
帖 子:289
专家分:0
注 册:2006-12-31
收藏
得分:0 
不明白什么意思?
比如,字符串是“abc123def5g”,是提取123呢,还是提取123和5呢,还是其它?

坚决不跟用TC的人打交道!
2007-01-02 12:38
mayudong1
Rank: 2
等 级:论坛游民
威 望:1
帖 子:348
专家分:21
注 册:2006-4-18
收藏
得分:0 
建议一个字符一个字符的判断,遇到是0-9的数字提出,经过什么乘10之类的处理把连续的数字字符变成一个整型放到一个整型变量中,然后继续后面的判断直到字符串结束

2007-01-02 13:50
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 
我给你介绍一个函数:
int atoi(char *nptr) 将字符串nptr转换成整型数, 并返回这个数,错误返回0

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-01-02 15:54
高达
Rank: 1
等 级:新手上路
威 望:1
帖 子:261
专家分:0
注 册:2006-10-27
收藏
得分:0 
以下是引用zbqf109在2007-1-2 12:38:30的发言:
不明白什么意思?
比如,字符串是“abc123def5g”,是提取123呢,还是提取123和5呢,还是其它?

是提取123
如果字符串是“acbcd123afafg456”
那么提取出 123 和456


哎 时间....................
2007-01-02 18:49
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

根据LZ说的,那就应该是提取123和5了.
这个比较简单吧.
1.一次循环判断当前字符是否是数字,同时检验标记是否为1(该标记表示前面出现的是一个数字).出现其他字符时标记为0.
为1则做sum=sum*10+str[i]-'0';直到出现其他字符,将这个值保存起来,同时将sum改为0.

2.也有用两个循环来做,不过还是一次遍历,思想和上差不多,就是不要那些标记.


倚天照海花无数,流水高山心自知。
2007-01-02 19:23
zbqf109
Rank: 1
等 级:新手上路
帖 子:289
专家分:0
注 册:2006-12-31
收藏
得分:0 
还有,我不知道怎样提取,是作为字符串提取,还是作为数字?我给你一个作为字符串处理的程序。
//提取字符串中的连续n(n>1)数字(不提取单个的数字)
#include <stdio.h>

void tiqu(char*);
int main()
{
char str[100]="\0";
printf("Input the string:\n");
scanf("%s",str);
tiqu(str);
return 0;
}
void tiqu(char *str)
{
int i=0,j=0,k=0;
while(str[i]!='\0')
{
while(str[i]<58&&str[i]>47) //如果是数字
{
j++;
i++;
}
if(j>1)
{
for(k=0;k<j;k++)
printf("%c",str[i-j+k]);
printf("\n");
}
j=0;
i++;
}
}

[此贴子已经被作者于2007-1-2 19:29:08编辑过]


坚决不跟用TC的人打交道!
2007-01-02 19:25
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

刚才做了一下,其实也不需要什么标记.

#include<stdio.h>

int main()
{
char str[1000];
long sum=0,data[1000];
int i=0,top=0;

scanf("%s",str);
while(str[i]!='\0')
{
if(str[i]>='0'&&str[i]<='9')
{
sum=sum*10+(str[i]-'0');//连续数字转换为数.
}
else
{
if(sum!=0)保存这个数
{
data[top++]=sum;
sum=0;
}
}
i++;
}
if(sum!=0)//判断最后一个字符是否是数
{
data[top++]=sum;
}
i=0;
while(i<top)
{
printf("%ld\n",data[i]);
i++;
}
return(0);
}


倚天照海花无数,流水高山心自知。
2007-01-02 19:38
高达
Rank: 1
等 级:新手上路
威 望:1
帖 子:261
专家分:0
注 册:2006-10-27
收藏
得分:0 
谢谢大家了

哎 时间....................
2007-01-02 19:53
论坛元老
Rank: 1
等 级:新手上路
帖 子:812
专家分:0
注 册:2008-3-31
收藏
得分:0 
路过,顶一下
2008-04-02 17:17
快速回复:怎样把字符串中连续数字提取并放到一个整形数组中
数据加载中...
 
   



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

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