#include<iostream>
using namespace std;
int main()
{
char a[30];
int b[30];
int begin=0,k=0,n=0;
cout<<"输入一个含有数字和字母的字符串"<<endl;
cin.getline(a,30);
for(int i=begin;a[i];i++)
if(a[i]>='0' && a[i]<='9'){
int j=i;
while(a[j]>='0' && a[j]<='9'){
n=n*10+(a[j]-48);
j++;}
b[k]=n;
cout<<b[k]<<" ";
k++;
n=0;
begin=j;
}
return 0;
}
怎样才能输出例如输入“ dsfkjsd34 23 454kjj “然后输出b[0]=34 b[1]=23 b[2]=454
你的循环控制除了问题,因为你输出34后又从4开始了,你需要在读入一个字符后跳过,所以没读过一个在j++之后添加i++,就不会有重复读取的问题了,改过后的代码如下:
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char a[30];
int b[30];
int begin=0,k=0,n=0;
cout<<"输入一个含有数字和字母的字符串"<<endl;
cin.getline(a,30);
for(int i=begin;i<strlen(a);i++)
if(a[i]>='0' && a[i]<='9'){
int j=i;
while(a[j]>='0' && a[j]<='9'){
n=n*10+(a[j]-48);
j++;
i++;}
b[k]=n;
cout<<b[k]<<" ";
k++;
n=0;
begin=j;
}
return 0;
}
程序结果: