C语言高手解答下
请教大家一下,有题如下:输入一个字符串,内有数字和非数字字符,如
a123x456 17960? 302tab5876
将其中连续的数字作为一个整数,依次存放到一数组a中。例如:123
放在a[0],456放在a[1]......统计共有多少个整数,并输出这些数。
以下是c代码:#include <stdio.h>
main()
{char str[50],*pstr;
int i,j,k,m,e10,digit,ndigit,a[10],*pa;
printf("Input a string:\n");
gets(str);
pstr=str;
pa=a;
ndigit=0;
i=0,j=0;
while(pstr[i])
{if(pstr[i]>=47&pstr[i]<=58)
j++;
else
{if(j>0)
{digit=pstr[i-1]-48;
k=1;
while(k<j)
{e10=1;
for(m=1;m<=k;m++)
e10=e10*10;
digit=digit+(pstr[i-1-k]-48)*e10;
k++;
}
*pa++=digit;
ndigit++;
j=0;
}
}
i++;
}
printf("There are %d numbers in this line.They are:\n",ndigit);
pa=a;
for(j=0;j<ndigit;j++)
printf("%d ",pa[j]);
printf("\n");
}
当输入字符串时,如果是输完按回车键,得出的结果就跟题目要求不一样,比如:
输入
a123x456 17960? 302tab5876(备注:前面有二个空格,输完5876直接按回车)
在turboc2.0运行得到以下结果
123 456 17960 302
但当输入
a123x456 17960? 302tab5876(备注:前面有二个空格,输完5876,先空格一下,再按回车键)
得出结果
123 456 17960 302 5876
输入其它的字符串也同上述那种结果。
有点搞不明白,懂的赐教一下,先谢谢先了。