在上面做两个数组,一个源串,一个目标串,逐个分拣即可。
授人以渔,不授人以鱼。
#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';//给字符串加上结束符很重要! }