主题:数组和字符串问题
qianying01
[专家分:0] 发布于 2010-10-31 21:56:00
各位大哥哥,大姐姐,小妹初学C语言,遇到了一个难题。
请大家赐教。
s指向一个含有数字字符的字符串,
将连续的数字序列转换为一个整数,将转换后生成的整数依次存到整形数组中。
编写函数:int re(char *s,int a[]),函数返回值为数组中整数的个数。
例如,输入"23456123242432"
数组a是(234,56,12324),函数返回值为4
最后更新于:2010-11-01 14:58:00
回复列表 (共1个回复)
沙发
kirs [专家分:190] 发布于 2010-11-01 00:06:00
#include<stdio.h>
#include<math.h>
int re(char *s,int a[])
{
int n=0,sum=0;
char *p,*p1;
while(*s!='\0')
{
if(*s>='0'&&*s<='9')
{
p=s;
s++;
while(*s>='0'&&*s<='9'&&s-p<5)
s++;
p1=s-1;
while(p<=p1)
{
sum+=(*p-48)*pow(10,p1-p);//用字符减去48(0的ASC码)得相应整数
++p;
}
a[n]=sum;
n++;
sum=0;
}
else s++;
}
return n;
}
main()
{
char ch[30];
int a[15],number,i=0;
gets(ch);
number=re(ch,a);
printf("the total is %d\n",number);
if(number>0)
{
printf("including :");
for(i=0;i<number;i++)
printf("%d ",a[i]);
}
}
我来回复