重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#includestdio.h
公司主营业务:成都做网站、网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联公司推出老城免费做网站回馈大家。
void Copy_string(char* str1, char* str2); //函数声明
int main()
{
char str1[20];
char str2[20];
puts("请输入字符串str1:");
gets(str1); //获取从键盘输入的字符串
Copy_string(str1, str2);
printf("字符串str2:%s\n",str2 );
return 0;
}
void Copy_string(char* str1, char* str2) //自定义字符串连接函数
{
int i = 0;
while (str1[i] != 0)
{
str2[i] = str1[i];
i++;
}
str2[i] = '\0'; //添加字符串结束符
}
运行结果:
扩展资料
C字符串库函数,实现字符串复制函数strcpy
char *strcpy(char *strDest,const char *strSrc)//源字符串参数用const修饰,防止修改源字符串
{
assert(strDest!==NULLstrSrc!== NULL);//断言
char *ad=strDest;//返回目标地址
while((*strDest++=*strSrc++)!='\0')//'\0'
{
NULL;
}
return ad;
}
在函数中是无法检查数组(字符串)空间大小的,所以就会一直复制,如果越界了也不会有明显错误,但如果遇到标记为不可写的内存便会运行时报错。输出时也无法检查数组大小,完全根据结束标志输出。至于后面的问题,如果越界后内存数据为0,正好可以作为结束标志,不过一般不为0.请问您用的是什么编译器和操作系统?
虽然成功几率很大,但只是巧合,绝对不能不加结束标志就作为字符串。
正因为这种错误不会很明显,编译器不检查不报错,有时也能运行,所以缓冲区溢出才满天飞~~~所以字符串操作一定要格外小心~~~
#includestdio.h
#include string.h//使用strcpy()函数
int main(void)
{
char a[30] = "abcdert";
char b[] = "hdskljgh;glh";
char c[30];
printf("%s\n", a);
printf("%s\n", b);
printf("赋值输出到 a 数组 %s\n", strcpy(a, b));
printf("赋值输出到 c 数组 %s\n", strcpy(c, b));
printf("%s\n", b);
return 0 ;
}
/*
* 定义函数:char *strcpy(char *dest, const char *src);
函数说明:strcpy()会将参数src 字符串拷贝至参数dest 所指的地址。
返回值:返回参数dest 的字符串起始地址
*/