在上面做两个数组,一个源串,一个目标串,逐个分拣即可。

授人以渔,不授人以鱼。

程序代码:#include<stdio.h>
#include<string.h>
int main()
{char fun(char a[],int n);
char str[20];
scanf("%s",str);
printf("%s",fun(str,20));//你把20传进去有什么作用吗?没发现
return 0;
}
char fun(char a[],int n)
{
char str[20];
int i,j=0,k;
k=strlen(a);
for(i=0;i<k;i++)
{
if(a[i]>'0'&&a[i]<'9')//首先这里就错了,你要的是不属于0-9的字符,那应该是(a[i]<'0'||a[i]>'9')
str[j]=a[i];
j++;}//这个j++没有和上一行的str[j]用括号打包起来,他就变成了整个for语句的一个子语句,它的值同i一样
return str[j]; //其次你这返回不了一个字符串!返回的是字符串中最后一个合法字符
}
程序代码:#include<stdio.h>
#include<string.h>
int main()
{char fun(char a[],int n);
char str[20];
scanf("%s",str);
fun(str,sizeof(str));
printf("%s",str);
return 0;
}
void fun(char a[],int n)
{
char str[20];
int i,j=0,k;
k=strlen(a);
for(i=0;i<k;i++)
{
if(a[i]<'0'||a[i]>'9'){
str[j]=a[i];
j++;}
}
for( i=0;i<j;i++)a[i]=str[i];
a[i]='\0';//给字符串加上结束符很重要!
}
