#include <stdio.h>
#include <math.h>
#define N 100
int getnum(char *);
int ch2i(char);
void print_number(int *,int);
int main(int argc, char *argv[])
{
char str[N],*p;
char ch_num[10],*p_char;
int a[N],n,count = 0,num = 0,*int_p;
printf("please input a string:\n");
gets(str);
p = str;
int_p = a;
while(1)
{
if (*p >= '0' && *p <= '9')
{
if (0 == num)
{
p_char = ch_num; //指向字符数组的首地址
*p_char++ = *p;
}
else
{
*p_char++ = *p;
}
num++;
}
else
{
if (num > 1)
{
*p_char = '\0'; //给字符数组的最后一个单元添加'\0'
num = 0;
*int_p++ = getnum(ch_num);
count++;
}
}
if (*p == '\0')
{
break;
}
p++;
}
printf("the string has %d number is:\n",count);
int_p = a; //数组指针指向首地址。
print_number(int_p,count);
system("pause");
return 0;
}
int getnum(char *ch)
{
char *head;
int result = 0,i = 0;
head = ch;
while(*ch)
{
ch++;
}
ch--; //指针指向数组的最后一个元素。
while (head <= ch)
{
result += pow(10,i++) * ch2i(*ch--);
}
return result;
}
int ch2i(char c)
{
int result;
switch(c)
{
case '0':
result = 0;
break;
case '1':
result = 1;
break;
case '2':
result = 2;
break;
case '3':
result = 3;
break;
case '4':
result = 4;
break;
case '5':
result = 5;
break;
case '6':
result = 6;
break;
case '7':
result = 7;
break;
case '8':
result = 8;
break;
case '9':
result = 9;
break;
default:
result = -1;
break;
}
return result;
}
void print_number(int *p,int n)
{
int i;
for (i = 0; i < n;i++)
{
printf("%d ",*p++);
}
}
|