持续创作,加速成长!这是我参与「掘金日新计划 · 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语言