写一个函数把字符串2拷贝到字符串1中,不准用strcpy函数;

#include<stdio.h>charcopy(chara[],charb[]){inti;for(i=0;i<100;i++){b[i]=a[i];}returnb... #include<stdio.h>
char copy(char a[],char b[])
{
int i;
for(i=0;i<100;i++)
{
b[i]=a[i];
}
return b;
}
main()
{
char x[50],y[100];
scanf("%c",x);
printf("%c\n",copy(x,y));
}
答案不对……,帮忙找找问题
展开
 我来答
changyiduU4Q
高粉答主

2019-10-02 · 关注我不会让你失望
知道答主
回答量:264
采纳率:100%
帮助的人:8.7万
展开全部

可以不需要返回值,同时若是通过具体数字限定大小,那么当数组大于此数字时,就无法通过完全复制。可以通过以下代码进行复制字符串

void mystrcpy(char *p,char *p1)

{while (*p1 != '\0'){*(p++) = *(p1++);}*p = '\0';}

扩展资料

C语言字符数组

在C语言中,若将一个数组传入函数,那么在函数中改变数组的值也会影响主函数或者其他调用此函数中此数组的值。因此可以将C语言数组形容为双向的。

数组

如果一个变量名后面跟着一个有数字的中括号,这个声明就是数组声明。字符串也是一种数组。它们以ASCII的NULL作为数组的结束。要特别注意的是,方括内的索引值是从0算起的。

strcpy函数

strcpy 函数由于不对数组边界进行检查,而非常容易造成各种缓冲区溢出的漏洞。这些漏洞很容易被利用,而造成严重的系统问题。在使用 strcpy 函数时,要小心谨慎。

参考资料来源:百度百科-c语言

参考资料来源:百度百科-strcpy

Magic347
2010-11-01 · 超过13用户采纳过TA的回答
知道答主
回答量:168
采纳率:0%
帮助的人:293万
展开全部
附赠strlen( char *p )和strcmp( char *p1 , char *p2 ) :]

(1)字符串长度函数:

int strlen( char *p )
{
int i=0;
while( p[i]!='\0' ){
i++;
}
return i;

}

(2)字符串复制函数:

//将p2所指的内容全部赋给p1
void strcpy( char *p1 , char *p2 )
{
int i=0;
while( p2[i]!='\0'){
p1[i]=p2[i];
i++;
}
p1[i]='\0';

}

(3)字符串比较函数:

int strcmp( char *p1 , char *p2 )
{
int i=0;
while( p1[i]!='\0' && p2[i]!='\0'){
if( p1[i]-p2[i] )
return p1[i]-p2[i];
i++;

}
return strlen(p1)-strlen(p2);

}

(4)最后,提供一个主函数供你测试一下,并附测试用例及预期输出结果 :]

int main()
{
char *p1 , *p2;
p1=new char[1000];
p2=new char[1000];
while( cin>>p1>>p2 ){

cout<<strlen(p1)<<endl;
cout<<strlen(p2)<<endl;
cout<<strcmp(p1,p2)<<endl;

strcpy(p1,p2);

cout<<"after copying p1 becomes "
<<p1<<endl;

}

return 0;
}
/*
helloWorld
myGirl
10
6
-5
after copying p1 becomes myGirl

abcdef
bcdefg
6
6
-1
after copying p1 becomes bcdefg

abcdefg
abcdefg
7
7
0
after copying p1 becomes abcdefg

abcdefg
abcdefghijkg
7
12
-5
after copying p1 becomes abcdefghijkg

abcdf
abcdd
5
5
2
after copying p1 becomes abcdd

abcdefghij
abcdefg
10
7
3
after copying p1 becomes abcdefg
*/
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友746780d
2010-11-01 · TA获得超过140个赞
知道小有建树答主
回答量:143
采纳率:0%
帮助的人:0
展开全部
#include<stdio.h>
char * copy(char a[],char b[])
{
int i;
for(i=0;i<100&&a[i]!='\0';i++)
{
b[i]=a[i];
}
return b;
}
main()
{
char x[50],y[100];
scanf("%s",x);
printf("%c\n",copy(x,y));
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
崇镶波0c5
2010-11-01 · TA获得超过434个赞
知道小有建树答主
回答量:97
采纳率:0%
帮助的人:115万
展开全部
template<class T>
T *strcpy(T *dest,const T *source)
{
if(source==NULL||dest==NULL)
return NULL;
if(source==dest)
return dest;
while(*dest++=*source++);
return dest;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
C_大白痴
2010-11-01 · TA获得超过261个赞
知道小有建树答主
回答量:220
采纳率:0%
帮助的人:269万
展开全部
#include<stdio.h>
char *copy(char a[],char b[])
{
int i;
for(i=0;i<100;i++)
{
b[i]=a[i];
}
return b;
}
main()
{
char x[50],y[100];
//scanf("%s",x);
gets(x);
printf("%s\n",copy(x,y));
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式