写点什么

strcpy()

作者:謓泽
  • 2022 年 7 月 19 日
  • 本文字数:1129 字

    阅读完需:约 4 分钟

🚩write in front🚩

🔎大家好,我是謓泽,希望你看完后。能对你有所帮助,不足请指正,共同学习交流🔎

🆔本文由 謓泽 原创 如需转载还请通知⚠

📝个人主页-InfoQ - 促进软件开发及相关领域知识与创新的传播-极客邦💬

🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​

✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩

📢2021 年度博客之星物联网与嵌入式开发 TOP5~2021 博客之星 Top100~阿里云专家 ^ 星级博主~掘金⇿InfoQ 创作者~周榜 99»总榜 1184👋

🎄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 语言

发布于: 刚刚阅读数: 3
用户头像

謓泽

关注

一起happy! 2022.01.29 加入

谁也不知道旅途的终点是怎么样的,现在只不过是开始。便全力以赴!终点必将是星辰大海。 2021年度博客之星物联网与嵌入式开发TOP5 2021博客之星Top100 阿里云专家博主^星级博主 CSDN⇿掘金⇿InfoQ[创作者]

评论

发布
暂无评论
strcpy()_7月月更_謓泽_InfoQ写作社区