求解:那位大神来看看 这小程序有什么问题
编一个程序,要求如下:
输入一段字符,其中包括如干数字,把连续的数字看成一个整数一起输出
如输入324dsgdf454fd5fh6 675fg
这输出应为:324 454 5 6 675
我试着编了一下程序,如下
#include <stdio.h>
#include <string.h>
void main(){
int i,n,m=0,k=0,j=0;
char a[80],b[80],*p;
gets(a);
p=a;
n=strlen(a);
for(i=0;i<n;i++){
while(*(p+i)>=48&&*(p+i)<=57){ //该字符为‘0’,。。。‘9’
m=m*10+(*(p+i)-48);
i++;j=1;
}
if(j==1)
{b[k]=m;k++;m=0;j=0;}
}
printf("k=%d\n",k);
for(i=0;i<k;i++){
printf("%6d",b[i]);}
}
该程序运行结果很奇怪
如果输入字符的单独数字或者两位数字都能正常输出,可如果有连续3位或者更多的数字,就出现负数等等
哪位大神能告诉我问题在哪里。
Ps: c语言菜鸟选手,希望回答是措辞尽量通俗。
[解决办法]
顶LS