谭浩强版的C语言,10.16题,
谭浩强版的C语言,10.16题,输入一个字符串,内有数字和非数字符,如 a123x456 将其中的连续的数字字符作为一个整数,一次存放到一个数组a中。例如 123存放在a[0]中,456存放在a[1]中,统计总过有多少个整数,并且输出这样的整数!
/*输入一个字符串,内有数字和非数字字符,把其中的数字字符组合在一起
作为一个整数放在一个内存中*/
void sort(char *p,int n)
{
int i,j=0,m=0,loox=0;
int sumdex=0;
int sum=0,s,f,c=1;
int flag=0,numdex=0,numstop=0;
int a[10];
loop:for (i=m;i<n;i++)
{
if ('0'<=*(p+i)&&*(p+i)<='9')
{
j++;
if (*(p+i+1)>'9'||*(p+i+1)<'0')
{
flag=1;
m=i+1;
break;
}
}
}
if (flag==1)
{
for (s=m;j>0;j--)
{
for(f=0;f<j;f++)
{
c=c*10;
}
sum=sum+(*(p+s-j)-48)*c;
sumdex++;
}
for (numdex=numstop;numdex<sumdex;numdex++)
{
a[numdex]=sum;
numstop=numdex+1;
printf("%d ",a[numdex]/10);
sum=0;
c=1;
}
flag=0;
j=0;
loox++;
if (loox<n)
{
goto loop;
}
}
}
void main()
{
char a[15];
int i;
printf("Please input the chars you wants:\n");
gets(a);
printf("The chars you input is :\n");
printf("%s\n",a);
sort(a,15);
}
这个是我自己想的程序,但是只能实现1 2 3 4 5 6 7 8 的情况,不知道为什么?请大家帮忙!