当前位置: 代码迷 >> C语言 >> 怎样把字符串中连续数字提取并放到一个整形数组中
  详细解决方案

怎样把字符串中连续数字提取并放到一个整形数组中

热度:186   发布时间:2007-01-02 12:36:54.0
怎样把字符串中连续数字提取并放到一个整形数组中
怎样把字符串中连续数字提取并放到一个整形数
搜索更多相关的解决方案: 整形  数字  字符  

----------------解决方案--------------------------------------------------------
不明白什么意思?
比如,字符串是“abc123def5g”,是提取123呢,还是提取123和5呢,还是其它?
----------------解决方案--------------------------------------------------------
建议一个字符一个字符的判断,遇到是0-9的数字提出,经过什么乘10之类的处理把连续的数字字符变成一个整型放到一个整型变量中,然后继续后面的判断直到字符串结束
----------------解决方案--------------------------------------------------------
我给你介绍一个函数:
int atoi(char *nptr) 将字符串nptr转换成整型数, 并返回这个数,错误返回0
----------------解决方案--------------------------------------------------------
以下是引用zbqf109在2007-1-2 12:38:30的发言:
不明白什么意思?
比如,字符串是“abc123def5g”,是提取123呢,还是提取123和5呢,还是其它?

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


----------------解决方案--------------------------------------------------------

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

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


----------------解决方案--------------------------------------------------------
还有,我不知道怎样提取,是作为字符串提取,还是作为数字?我给你一个作为字符串处理的程序。
//提取字符串中的连续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编辑过]


----------------解决方案--------------------------------------------------------

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

#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);
}


----------------解决方案--------------------------------------------------------
谢谢大家了
----------------解决方案--------------------------------------------------------
路过,顶一下
----------------解决方案--------------------------------------------------------
  相关解决方案