#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
void sum_output(char s[],int *pn,int *pi); //字符串数组、两个指针变量作形参
char str[100];
int i=0,num[15],inter[25]; //num数组用来存放找到的数字,inter数组存放找到的整数
printf("input string:\n");
while((str[i]=getchar())!='\n')
i++;
str[i]='\0';
sum_output(str,num,inter); //将字符串首字符地址传递到sum_output函数,num,inter数组首元素地址通过形参传递
return 0;
}
void sum_output(char s[],int *pn,int *pi)
{
int i,j,t,sum,o,flag=0,k=0,*pi1;
pi1=pi;
t=strlen(s);
for(i=0;i<t;i++)
{
if(*(s+i)>='0'&&*(s+i)<='9')
{
*pn++=*(s+i)-'0'; //把字符类型数字转换成整数类型数字赋给num数组
k++;
flag=1;
}
else
{
if(flag==1)
{
sum=0;
for(j=0;j<k;j++)
{
o=pow(10,k-1-j)*(*(pn-k+j)); //调用pow函数把num数组中的数字转换成十进制整数
sum=sum+o;
}
*pi++=sum;
flag=0;
k=0;
}
}
}
if(k!=0) //考虑最后一个字符为数字的情况
{
sum=0;
for(j=0;j<k;j++)
{
o=pow(10,k-1-j)*(*(pn-k+j));
sum=sum+o;
}
*pi++=sum;
}
*pi='\0';
printf("integers: ");
for(i=0;*(pi1+i)!='\0';i++)
printf("%d ",*(pi1+i));
printf("\nnumber:%d\n",i);
}
运行结果: