函数*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
== ---------------------------------------------------------华丽的分割线---------------------------------------------------------==