从字符串中提取数

#include <stdio.h>
#include <stdlib.h>
int pow_jh(int x,int y);
int main()
{
    char str[50],*pstr=str;
    gets(str);
    int a[50],g=0,w=0,i=0,number=0,k;//g:多少个整数;w:几位;number:整数
    while((*(pstr+i))!='\0')
    {
        if(*(pstr+i)>='0'&&*(pstr+i)<='9')
        {
            w++;
        }
        else
        {
            if(w>0)
            {
                g++;
                k=1;
                while(k<=w)
                {
                    number+=(*(pstr+i-k)-48)*pow_jh(10,k-1);
                    k++;
                }
                a[g-1]=number;
                number=0;
                w=0;
            }

        }
        i++;
    }
    if(w>0)//因为上面的while语句判断条件是不等于'\0',所以当字符串以数字结尾时无法进入while()中输出最后几个数字,所以在while()应再加个if()。
    {
        g++;
        k=1;
                while(k<=w)
                {
                    number+=(*(pstr+i-k)-48)*pow_jh(10,k-1);
                    k++;
                }
        a[g-1]=number;
        number=0;
    }
    for(i=0;i<g;i++)
    {
        printf("%d ",a[i]);
    }
    printf("\n%d",g);


    return 0;
}
int pow_jh(int x,int y)
{
    int i;
    int sum=1;
    if(y==0)
        return 1;
    else
    {
        for(i=0;i<y;i++)
            sum=sum*x;
    }
    return sum;
}

input:

a123x456 17960? 302tab5876

output:

123 456 17960 302 5876
5

 

posted @ 2017-02-25 10:57  路人姜。  阅读(161)  评论(0编辑  收藏  举报