[求助]字符串操作
/*题目是这样的:
输入一串字符,如
dgt125 ?458 .20
要把连续的字符组成一个整数,依次放到数组a中,如把125放到a[0],458放到a[1],20放到a[2]
输出数组元素:125 458 20
整数的个数:3
*/
#include"stdio.h"
#define N 64
int main(void)
{
int i,j,k,flag=0,m=0,count=0;
int a[N];
char str[N],temp[N];
printf("请输入一个字符串:");
gets(str);
for(i=0,j=0;str[i]!='\0';i++)
{
temp[0]='\0'; //把temp置为空串
while(str[i]<='9'&&str[i]>='0') //如果是数字字符进入
{
temp[j]=str[i];
flag=1;
if(str[i+1]>'9'||str[i+1]<'0')
{
temp[j+1]='\0';
break;
}
i++;
j++;
}
if(flag==1)//如果 flag==1表示已经temp[]中有整数,开始转换
{ a[m]=0;
for(k=0;j>=0;j--,k++)
a[m]+=(temp[j]-48)*pow(10,k);
m++;
count++;
flag=0;
}
}
printf("连续的整数为:");
for(i=0;i<=count-1;i++)
printf("%d ",a[i]);
printf("\n其中连续整数的个数是:%d\n",count);
system("pause");
return 0;
}
/*1.a[0]有时可以正确显示,有时会比输入少1(如123),以后的就不行了,都是只有后两位,如果是一位的,就是0
怎么回事啊,啊里出了问题?觉得应该是
for(k=0;j>=0;j--,k++)
a[m]+=(temp[j]-48)*pow(10,k);
中没有加最后一位.
但是第一个又是对了,真是郁闷......
谢谢了. */