编写函数int parse(char *str, int *num),用户输入的字符串中包含有若干个数字,要求通过该函数将数字提取出来,并返回数字个数。编写完整程序实现和验证本题任务。(允许使用#include <string.h>)
注:若只实现返回数字个数,本题只获得20分。允许数字以字符的形式给出,本题可获25分。将提取到的数字存储在num数组中,并在main()中输出,将获30分。
输入:
字符串str。
输出:
输出字符串中的数字个数,以及各个数字。
提示:如下输出结果供验证程序是否正确:
输入:
Abc12dE23 e45i789
输出:
Total 4 numbers:
12 23 45 789
输入:
@@23%%78^^9%%45
输出:
Total 4 numbers:
23 78 9 45
#include<stdio.h>
int parse(char* str, int* num[])
{
int sum=0,n=0;
while (*str)
{
if (*str >= '0' && *str <= '9')
{
sum++;
while (*str!='\0' && *str >= '0' && *str <= '9')
{
n = n * 10 + *str-'0';
str++;
}
num[sum-1] = n;
n = 0;
}
str++;
}
return sum;
}
int main()
{
char str[50] = {"0"};
int num[50] = {0};
gets(str);
printf("Total %d numbers\n", parse(str,num));
for (int i = 0; i < 50; i++)
{ if(num[i]!=0)
printf("%d ", num[i]);
}
return 0;
}