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]);
} 展开
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]);
} 展开
3个回答
展开全部
#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;
}
这个我调试好了。原来你之前还有一些错误。
展开全部
#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]);}
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]);}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
函数调用的时候参数错了。a(b,c);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询