是返回总共奇数的个数,和把所有的奇数在在另外一个数组里面打一遍:
#include <stdio.h>
int copyTo(int *s1,int n,int *s2);
int main()
{
int n[]={2,34,56,65,43,21,67,6,8};
int m[9],a,b;
a=copyTo(n,9,m);
printf("%d\n",a);
for(b=0;b<a;++b)
printf("%d ",m[b]);
}
int copyTo(int *s1,int n,int *s2)
{
int i,sum=0;
for(i=0;i<9;++i)
if(*(s1+i)%2){
*(s2+sum)=*(s1+i);
sum++;}
return sum;
}


运行结果:
4

65 43 21 67





还有一个问题:#include <stdio.h>
#include <string.h>
void copy(char *str1,char *str2);
int main()
{
char n[]="ousdfoiwdfjowihfowduhfsdfsdfcJKHFSDSGDc";
char m[100];
copy(n,m);
puts(m);
return 0;
}
void copy(char *str1,char *str2)
{
int i,k=0;
for(i=0;i<strlen(str1);++i)    //为什么这里测str1的长度竟然是上面字符串的长度,他这里不是第一个字符的地址吗?
if(97<=*(str1+i)&&*(str1+i)<=122){
*(str2+k)=*(str1+i);
k++;}
*(str2+k)='\0';
}