编写函数void strxcpy(char *s1,char *s2)复制一个字符串s1到字符数组s2中,在复制时删除其中的数字字符

#include "stdio.h"
void strxcpy(char *s1,char *s2)
{
int i=0;
char a[10],b[10];
s1=a;
s2=b;
while(*(s2+i)!='\0')
{
if(*(s2+i)>='0'&&*(s2+i)<='9')
continue;
else
*(s1+i)=*(s2+i);
i++;
}
*(s1+i)='\0';
}
void main()
{
char a1[10],b1[10];
char *s11,*s22;
gets(s22);
s11=a1;
s22=b1;
strxcpy(s11,s22);
puts(s11);
}
各位大神,运行不出来,哪错了?急求

main中赋值和输入顺序反了. s22还没有指向b1的时候,就输入了. 导致野指针错误. 

void main()
{
char a1[10],b1[10];
char *s11,*s22;

s11=a1;
s22=b1;
gets(s22);
strxcpy(s11,s22);
puts(s11);
}

strxcpy函数也有问题. 

void strxcpy(char *s1,char *s2)
{
    while(*s2)
    {
        if(*s2<'0'||*s2>'9')
            *s1++=*s2;
        s2++;
    }
    *s1='\0';
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-12-26
#include "stdio.h"
void strxcpy(char *s1,char *s2) { int i,j;
  i=j=0;
  while(s2[i]!=0) {
    if ( !(s2[i]>='0'&& s2[i]<='9') ) { s1[j]=s2[i]; j++; }
    i++;
  }
  *(s1+j)='\0';
}
void main() { char a1[10],b1[10]; char *s11,*s22;
  s11=a1; s22=b1;
  gets(s22);
  strxcpy(s11,s22);
  puts(s11);
}

第2个回答  2017-12-26
//问题太多,不一一说了,改好的代码供参考
#include "stdio.h"

void strxcpy(char *s1, char *s2)
{
int i = 0;
while (*s1)
{
if (*s1 >= '0' && *s1 <= '9')

s1++;
continue;
}
*s2++ = *s1++;
}
*s2 = 0;
}

int  main()
{
char a1[10], b1[10];
gets(a1);
strxcpy(a1, b1);
puts(b1);
return 0;
}

第3个回答  2017-12-26
应该是主函数有问题追答

定义指针后先指定空间

相似回答