输入一个字符串,将其中连续的数字作为一个整数,依次存放在数组 a[10] 中。如123放在a[0],456放在a[1]。并统计有多少个整数。运行结果有差别,有疑
#include<stdio.h>#include<conio.h>
int main(void)
{
char str[100],*pstr;
int i,j,k,m,e10,digit,ndigit,a[10],*pa;
printf("input a string:\n");
gets(str);
printf("\n");
pstr = &str[0];
pa = &a[0];
ndigit = 0;//代表多少个整数。
i = 0;
j = 0;//代表连续数字的位数。
while(*(pstr+i) != '\0')
{
if(*(pstr+i)>='0' && *(pstr+i)<='9')
j++;
else
{
if(j > 0)
{
digit = *(pstr+i-1)-48;//将个位数赋值给digit。
k = 1;
while(k < j)//将两位以上数的其他位的数值给digit。
{
e10 = 1;
for(m = 1;m <= k;m++)
e10 = e10 * 10;
digit = digit + (*(pstr+i-1-k)-48) * e10;
k++;
}
*pa = digit;
ndigit++;
pa++;
j = 0;
}
}
i++;
}
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\n",*(pa+j));
getch();
return(0);
}
题目是:输入一个字符串,将其中连续的数字作为一个整数,依次存放在数组 a[10] 中。如123放在a[0],456放在a[1]。并统计有多少个整数。
问题是:
输入" a123x456 17960?302tab5876 "这字符串,输出应该是 5 个整数:123、456、17960、302、5876.可是输出的就是只有 4 个
只有123、456、17960、302。没有5876。 ndigit 也只有4个。后面的5876好像就没有检查过去。。
本人看C语言才2个月,什么检测方法也不知道。就是找不出为什么。。。
下面是输入数据后运行的结果。没有5876.求各位解惑?
input a string:
a123x456 17960?302tab5876
there are 4 numbers in this line.they are:
123
456
17960
302
Press any key to continue