c语言问题:写一个函数,将一个字符串的元音字母复制到另一字符串。这么写哪里错了。。

#include<stdio.h>intmain(){chara(chararray1[],chararray2[]);charb[10]={"asdfghjklq"};... #include<stdio.h>
int main()
{
char a(char array1[],char array2[]);
char b[10]={"asdfghjklq"};
int i,c[10];

a(b[10],c[10]);
for(i=0;i<10;i++)
printf("%c",c[i]);
return 0;

}
char a( char array1[10],char array2[10])
{
int i,j;
j=0;
for(i=0;i<10;i++)
if(array1[i]='a'||array1[i]='e'||array1[i]='i'||array1[i]='o'||array1[i]='u')
{

array2[j]=array1[i];
j++;
}
return (array2[j]);

}
展开
 我来答
yzviolet
2013-12-18 · TA获得超过2578个赞
知道大有可为答主
回答量:1196
采纳率:0%
帮助的人:979万
展开全部
#include<stdio.h> 
int a(char array1[],char array2[]); // 最好放这里

int main()
{
    //int a(char array1[],char array2[]); // 最好放外面去声明
    char b[ArraySize]={"asdfghjklq"};
    int i,c[10];
    int count;
    //a(b[10],c[10]);  // 错了,这样是表示送两个字节给 a 函数作参数。
                       // b[10]是取b的下标为10的char。并且下标越界。b数组最大是b[9]
    int count = a(b,c); //这样才对。另外从 a 函数返回 c 有多少给数字。
    for(i=0; i < count; i++)  // c 可能没有10个数据,比较 a 函数返回的长度。
printf("%c",c[i]);
    return 0;
}
int a( char array1[],char array2[])  // 不需要声明数组长度
{
    int i,j;
    j=0;
    for(i=0; i < strlen(array1); i++) // 用 strlen 求array1长度。另外个朋友用'\0'也行
    {
if(array1[i]='a'||array1[i]='e'||array1[i]='i'||array1[i]='o'||array1[i]='u')
{
    array2[j]=array1[i];
            j++;
}
    }
    //return (array2[j]); //array2 是进来的参数,没必要返回
    return j;  // 返回复制到 array2 中的个数。
}
更多追问追答
追问
不行啊,运行不了。我把你的拿去运行,运行不了。
追答
#include "stdafx.h"
#include <stdio.h> 
#include <string.h>

int a(char array1[],char array2[]); 
 
int main()
{
    char *b={"asdfghjklq"};
    int i;
    char c[10];
    
    int count = a(b,c); 
 
    for(i=0; i < count; i++)  
        printf("%c",c[i]);

    return 0;
}
int a( char array1[],char array2[])  
{
    unsigned int i,j;
    j=0;
    for(i=0; i < strlen(array1); i++)
    {
        if(array1[i] == 'a' || array1[i] == 'e'   // 这里你用了 =,应该用 ==
            || array1[i] =='i'|| array1[i] == 'o' || array1[i] == 'u')
        {
            array2[j]=array1[i];
            j++;
        }
    }
    return j;  
}

这个我调试好了。原来你之前还有一些错误。

378287007yx
2013-12-18 · TA获得超过148个赞
知道小有建树答主
回答量:174
采纳率:100%
帮助的人:197万
展开全部
#include<stdio.h> int main(){ void a(char array1[],char array2[]); char b[11]={"asdfghjklq"};//数组大小为11,还有‘\0’ int i;char c[10];//c应定义为数组
a(b,c);//地址传递 for(i=0;c[i]!='\0';i++)//c不一定有十个字符 printf("%c",c[i]); return 0;
}void a(char array1[10],char array2[10]){ int i,j; j=0; for(i=0;i<10;i++)//=为== if(array1[i]=='a'||array1[i]=='e'||array1[i]=='i'||array1[i]=='o'||array1[i]=='u') { array2[j]=array1[i]; j++; } array2[j]='\0';//末尾加‘\0’ // return (array2[j]);}
追问

不行啊。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我是Talentbdd
2013-12-18 · TA获得超过566个赞
知道小有建树答主
回答量:548
采纳率:0%
帮助的人:317万
展开全部
函数调用的时候参数错了。a(b,c);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式