输入一个字符串,内有数字和非数字字符,如a123x456u17960? 302tab5876 将其中连续的数字作为一个整数,依次存放到一数组a中。例如,123放在a[0],456放在a[1]。。。统计共有多少个整数,并输出这些数。
#include <iostream>
#include <cstring>
using namespace std;
int main(){
void print(char *);
char s[80],*p;
cout<<"输入一个字符串:";
cin>>s;
p=s;
print(p);
cout<<endl;
return 0;
}
void print(char *p){
int a[10],i,j;
int flag =0;//判断是不是数字
int t=0;
char *m;
for(m=p;*m!='\0';m++){
if(*m>='0' && *m<='9'){
flag=1;//是数字
t=t*10+(*m-'0');//字符转换
}else if (flag==1){
flag=0, a[i++]=t, t=0;
}
if (*m>='0'&&*m<='9'&&*(m+1)=='\0'){ //此条件是判断字符串末尾是数字的情况下加入一个字符,避免最后一个整数没有录入就跳出循环
*(m+2)='\0', *(m+1)='s';
}
}
j=i;
cout<<"数组为: ";
for (i=0; i<j; i++)
cout<<a[i]<<' ';
cout<<endl;
}