输入一个字符串,内有数字和非数字字符,将其中连续的数字作为一个整数,依次存放到一个数组中。统计共有多少个整数,并输出这些数。
代码
#include<stdio.h>
int main()
{
char str[50],*pstr;
int i=0,j=0,k,m,e10,digit,ndigit=0,a[10],*pa;
printf("Please enter a string: ");
gets(str);
pstr=&str[0];/*字符串指针指向字符串首地址*/
pa=&a[0];/*数字指针指向数组首地址*/
while(*(pstr+i)!='\0')
{
if((*(pstr+i)>='0')&&(*(pstr+i)<='9'))/*如果是数字,则开始计数*/
j++;
else
{
if(j>0)/*当上一个字符是数字,当前字符是非数字时*/
{
digit=*(pstr+i-1)-48;/*先计算出最后一个数字*/
k=1;
while(k<j)/*依次计算其他位上的数字*/
{
e10=1;
for(m=1;m<=k;m++)/*按照数字应有的位置乘以相应的幂次方*/
e10*=10;
digit+=(*(pstr+i-1-k)-48)*e10;
k++;
}
*pa=digit;/*将本次计算出来的数字存入数组*/
ndigit++;/*数字个数增1*/
pa++;
j=0;
}
}
i++;/*字符串指针往后移动一位*/
}
if(j>0)/*如果字符串是以数字结束的*/
{
digit=*(pstr+i-1)-48;
k=1;
while(k<j)
{
e10=1;
for(m=1;m<=k;m++)
e10*=10;
digit+=(*(pstr+i-1-k)-48)*e10;
k++;
}
*pa=digit;
ndigit++;
j=0;
}
printf("There are %d numbers in this line,they are:\n",ndigit);
j=0;
pa=&a[0];
for(j=0;j<ndigit;j++)/*输出数字*/
printf("%d ",*(pa+j));
printf("\n");
return 0;
}