大一,c++,第8题,求解

img

附上我有错的代码
#include
using namespace std;
#define M 8
void getDigits(chars1,chars2)
{
char a[M],b[M];
s1=a;
s2=b;
int i=0,j=0;
for(;i<M;i++,s1++)
{
if(*s1>=48&&*s1<=57)*s2++=*s1;
}
s2='\0';
}
int main()
{
int m,n;
char a[M]="as 12a3",b[M];
char
s1=a,*s2=b;
getDigits(s1,s2);
cout<<s2;
}


#include<iostream>
#include<stdio.h>
using namespace std;
#define M 8
void getDigits(char s1[],char s2[])
{
    //char a[M], b[M];
    //s1 = a;
    //s2 = b;
    int i = 0, j = 0;
    for (; i < M; i++)
    {
        if (s1[i] >= 48 && s1[i] <= 57)s2[j++] = s1[i];
    }
    s2[j] = '\0';
}
int main()
{
    int m, n;
    char a[M] = "as 12a3", b[M];
    char* s1 = a, * s2 = b;
    getDigits(s1, s2);
    cout << s2;
}