strcpy()

129 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第22天,点击查看活动详情

🚩write in front🚩

🔎大家好,我是泽奀,希望你看完后。能对你有所帮助,不足请指正,共同学习交流🔎
🏅2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~阿里云专家^星级博主~掘金⇿InfoQ创作者~周榜89»总榜1512🏅
🆔本文由 謓泽 原创 CSDN首发🙉如需转载还请通知⚠
📝个人主页-掘金 (juejin.cn)💬
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​
📣系列专栏-[C系列] 从0到1 - 泽奀的专栏 - 掘金 (juejin.cn)🎓
✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩

 🎄strcpy() - 复制字符串🎄

strcpy() 函数的声明方式如下 👇

char *strcpy(char *dest, const char *src)

把 src 所指向的字符串复制到 dest。

需要注意的是如果目标数组 dest 不够大,而源字符串的长度又太长,可能会造成缓冲溢出的情况。所以,dest 一定要足够大,这样才能被 src 给存放的下去。

dest 指向用于存储复制内容的目标数组。

src 要复制的字符串。

该函数返回一个指向最终的目标字符串 dest 的指针。

strcpy() 在原来字符要保证拥有 src 存在字符的空间大小也就是下标。

注意:这里的返回值的指针类型可以是void *也可以是char *的类型。

🎄strcpy()函数代码示例🎄

使用 ****strcpy() ****函数代码示例如下 👇

#include <stdio.h>
#include <string.h>

int main ()
{
  char str1[]="C语言";
  char str2[40];
  char str3[40];
  strcpy (str2,str1);
  strcpy (str3,"C++语言");
  printf ("str1: %s\nstr2: %s\nstr3: %s\n",str1,str2,str3);
  return 0;
}

运行结果如下 👇

str1: C语言
str2: C语言
str3: C++语言
 

当然我们还要注意:char str[ ] = {'a','b','c'}; 如果你是想这样子进行存放的话依旧还是不行的原因很简单'\0',示例代码如下:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>

int main()
{
	char str1[] = { 'a', 'b', 'c' };
	char str2[40];
	strcpy(str2, str1);
	printf("%s", str2);
	return 0;
}

运行结果如下 👇 ​ 就会是这个样子具有随机值后面,因为我们不清楚'\0'到底在哪里。

当然如果是这样char str1[] = { 'a', 'b', 'c','\0'}; 就不会因为我们在最后一个元素添加了'\0'。 

🎄创建自定义函数实现strcpy()的功能🎄

示例代码如下:👇

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
#include <assert.h>
void My_strcpy(char *dest, const char *src)
{
	assert(dest != NULL);
	assert(src != NULL);
	while (*src != '\0')
	{
		*dest = *src;//进行赋值
		*src++;
		*dest++;//指向下一个字符
	}
}
int main(void)
{
	char *p = "C语言";
	char str[20] = { 0 };
	My_strcpy(str, p);
	printf("str = %s\n",str);
	return 0;
}

运行结果如下 👇

str = C语言