字符串提取数字,完成函数
void take_num(const char *strIn, int *n, unsigned int *outArray)
输入
strIn="ab00cd+123fght456-25 3.005fgh"
输出
n=6
outArray={ 0, 123, 456, 25, 3, 5 }(不考虑小数:如3.005输出3和5)
下面是参照网络高手http://blog.csdn.net/yuliu0552/article/details/6744618写的,加上了自己点输入输入控制。
#include<stdio.h>
#include<string.h>
#include<malloc.h>
void take_num(const char *strIn, int *n, unsigned int *outArray)
{
const char *p=strIn;
int value;
int j=0;
while(*p)
{
value=0;
if('0'<=*p&&*p<='9')
{
while('0'<=*p&&*p<='9')
{
value=value*10+(*p-'0');
p++;
}
outArray[j++]=value;
}
p++;
}
*n=j;
}
void main()
{
char *strIn="huaweiu880 +-0zte/*3..005zhaopin";
int count;
unsigned int *outArray;
int len;
len=strlen(strIn);
outArray=(unsigned int *)malloc(sizeof(unsigned int *)*len);
for(int j=0;j<len;j++)
outArray[j]=0;
take_num(strIn,&count,outArray);
puts(strIn);
printf("find %d number,they are:\n",count);
for(int i=0;i<count;i++)
{
printf("%d\n",outArray[i]);
}
}
运行结果:
huaweiu880 +-0zte/*3..005zhaopin
find 4 number,they are:
880
0
3
5