写一个函数把字符串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));
}
答案不对……,帮忙找找问题 展开
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));
}
答案不对……,帮忙找找问题 展开
展开全部
可以不需要返回值,同时若是通过具体数字限定大小,那么当数组大于此数字时,就无法通过完全复制。可以通过以下代码进行复制字符串:
void mystrcpy(char *p,char *p1)
{while (*p1 != '\0'){*(p++) = *(p1++);}*p = '\0';}
扩展资料
C语言字符数组
在C语言中,若将一个数组传入函数,那么在函数中改变数组的值也会影响主函数或者其他调用此函数中此数组的值。因此可以将C语言数组形容为双向的。
数组
如果一个变量名后面跟着一个有数字的中括号,这个声明就是数组声明。字符串也是一种数组。它们以ASCII的NULL作为数组的结束。要特别注意的是,方括内的索引值是从0算起的。
strcpy函数
strcpy 函数由于不对数组边界进行检查,而非常容易造成各种缓冲区溢出的漏洞。这些漏洞很容易被利用,而造成严重的系统问题。在使用 strcpy 函数时,要小心谨慎。
参考资料来源:百度百科-c语言
参考资料来源:百度百科-strcpy
展开全部
附赠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
*/
(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
*/
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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));
}
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));
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;
}
T *strcpy(T *dest,const T *source)
{
if(source==NULL||dest==NULL)
return NULL;
if(source==dest)
return dest;
while(*dest++=*source++);
return dest;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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));
}
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));
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询