提取字符串中的数字

函数*GetNum(char *str,int *count)用于将字符串中相邻两个非数字字符之间的数字提取出来,并将所有提取出来的数字放入到数组num[ ]中。

int *GetNum(char *str,int *count)
{
    int i = 0, j = 0, flag = 1, len = strlen(str);
    int *num = (int *)calloc(len,4);
    num[0] = 0;
    if (isdigit(str[len - 1]) == 0)
        flag = 0;
    while (len--)					//倒序提取数字
    {
        if (isdigit(str[len]) != 0)
        {
            num[j] = num[j] + ((int)str[len] - 48)*((int)pow(10, i));
            i++;
        }
        else if ((len > 0) && (isdigit(str[len]) == 0) && (isdigit(str[len - 1]) != 0))
        {
            if (flag > 0)
            {
                i = 0;
                j++;
                num[j] = 0;
            }
            flag = 1;
        }
    }
    flag = 0;
    *count = j + 1;					//数字数量
    while (j > flag)					//顺序反转
    {
        i = num[j];
        num[j] = num[flag];
        num[flag] = i;
        j --;
        flag++;
    }
    return num;
}

void main()
{
    char str[100];
    int *num,count = 0;
    gets_s(str);
    num = GetNum(str,&count);
    printf("Input %d nmubers:\n",count);
    while(count--)
    {
    	printf("%d\t",*num);
    	num ++;
    }
}

运行结果示例:

2d5f8sg65gds6*896/956l#5+24-b36f3c
Input 11 nmubers:
2       5       8       65      6       896     956     5       24      36      3

j9h8d9f85g6f5hg56cb5a3s5d6f9h5j1 66 99
Input 16 nmubers:
9       8       9       85      6       5       56      5       3       5       6       9       5       1       66	99

== ---------------------------------------------------------华丽的分割线---------------------------------------------------------==

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值