/*没做优化在此之上,适当优化*/
#include<stdio.h>
int main(void)
{
char *str=(char *)malloc(100);
long i=0,k=0,j,num=0,temp=0,ratio,symbol;
long len[20],swap[15];
/*clrscr();*/
printf("请输入一段,字母或数字:\n");
gets(str);
while(*str!='\0')
{
if(*str>='0'&&*str<='9')
{
len[i]=*str^'0';
i++;
}
else
{
if(i>0)
for(j=i-1;j>=0;j--)
{
symbol=1;
if(j==i-1) ratio=1;
len[j]=len[j]*ratio;
temp=temp+len[j];
ratio=ratio*10;
if(j<=0) ratio=0;
}
if(temp!=0)
{
swap[k]=temp;
k=k+symbol;
num+=symbol;
i=0;
j=0;
temp=0;
symbol=0;
}
}
str++;
}
if(i>0)
for(j=i-1;j>=0;j--)
{
symbol=1;
if(j==i-1) ratio=1;
len[j]=len[j]*ratio;
temp=temp+len[j];
ratio=ratio*10;
if(j<=0) ratio=0;
}
if(temp!=0)
{
swap[k]=temp;
k=k+symbol;
num+=symbol;
j=0;
i=0;
temp=0;
symbol=0;
}
for(i=0;i<num;i++)
printf("%ld ",swap[i]);
printf("\ntotal==%ld",num);
}