广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言的strcpy函数你了解吗
  • 934
分享到

C语言的strcpy函数你了解吗

2024-04-02 19:04:59 934人浏览 安东尼
摘要

目录strcpy函数原型参数讲解返回值详解函数详解第二个注意点:目标空间必须足够大,以确保能存放源字符串第三个注意点:目标空间必须可变总结strcpy 拷贝字符串到目标地址 函数原

strcpy

拷贝字符串到目标地址

函数原型

char *strcpy( char * destination, const char * source )

参数讲解

参数destinationsource
解释目标字符串地址以 Null 结尾的源字符串地址

返回值详解

这些函数中的每一个都返回目标字符串,没有返回值就是拷贝失败。

函数详解

strcpy使用时几个注意点

 第一个注意点:源字符串必须以‘\0’结束,同时会将源字符串中的‘\0’拷贝到目标空间。

就是说当我们把源字符串拷贝到目标地址时什么时候停止呢,就是当把源字符串中的‘\0’也拷贝过去时结束。

用以下代码为例,就是说当arr2中f拷贝到arr1中时,strcpy还会把arr2中的‘\0’拷贝到arr1中

#include<stdio.h>
#include<string.h>
int main()
{
	char arr1[8];
	char arr2[] = "abcdef";
 
	strcpy(arr1, arr2);
 
	printf("%s\n", arr1);
	return 0;
}

 而如果arr2中没有‘\0’时,看如下图片所示,strcpy会越界访问直到程序崩溃!

 而当给arr2中添加'\0'时,程序就很容易就编译过去了 

所以在源地址中一定要存在'\0'

第二个注意点:目标空间必须足够大,以确保能存放源字符串

假如我们把arr2中的七个字符拷贝到arr1中去,遗憾的是arr1只有四个空间不够大,这时我们还调用strcpy,就会发现程序崩了!

 为什么程序会崩了呢?原因很简单,就是‘装不下’,arr1的栈空间被破坏了。

而作为程序员的我们,必须保证目标空间足够大,strcpy本身是不考虑这些问题的(很滑稽是不是,有一种你叫我干啥我干啥,出事了还怪我喽的味道)

第三个注意点:目标空间必须可变

例如下面这个代码,arr1指向"qwertyuiop"(这个字符串足够长吧),现在要求把arr2中的字符串拷贝到arr1中去,大家觉得结果会是什么?

#include<stdio.h>
#include<string.h>
int main()
{
	char* arr1 = "qwertyuiop";
	char arr2[] = "abcedf";
	strcpy(arr1, arr2);
 
	printf("%s", arr1);
	return 0;
}

看到这想必大家心理应该都有答案了,调试一下发现程序又崩了!这是为什么呢?

 就是因为arr1指向的是常量字符串,常量是不可修改的。如果非要写成代码去修改它,抱歉只能报错了。所以大家使用strcpy是目的地必须是可修改的。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!    

--结束END--

本文标题: C语言的strcpy函数你了解吗

本文链接: https://www.lsjlt.com/news/143411.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言的strcpy函数你了解吗
    目录strcpy函数原型参数讲解返回值详解函数详解第二个注意点:目标空间必须足够大,以确保能存放源字符串第三个注意点:目标空间必须可变总结strcpy 拷贝字符串到目标地址 函数原...
    99+
    2022-11-13
  • C语言strcpy库函数详解
    目录C语言strcpy库函数的讲解附1:MSDN关于strcpy库函数的简介思路:总结 C语言strcpy库函数的讲解 附1:MSDN关于strcpy库函数的简介 思路: 1.从上...
    99+
    2022-11-12
  • C语言的abs()函数和div()函数你了解吗
    C语言库中提供了许多函数,这样需要计算的时候,可以直接借助库函数,而不用自己重新编写函数。今天就来看一下C语言标准库函数里面的整型函数。 int __cdecl abs(int ...
    99+
    2022-11-13
  • C语言时间函数的ctime()和gmtime()你了解吗
    目录ctime函数gmtime函数总结函数原型如下: __CRT_INLINE char *__cdecl ctime(const time_t *_Time); __CRT_I...
    99+
    2022-11-13
  • C语言的函数概念与规则你了解吗
    目录一、函数概念1.传入参数2.返回值二、函数参数三、指针函数-函数名指针化1.指针指向其他函数的函数名(标签)效果2.指针指向其他函数的地址效果3.通过二级指针,将一组函数线性化四...
    99+
    2022-11-12
  • C语言strcpy库函数怎么用
    这篇文章主要介绍C语言strcpy库函数怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!C语言strcpy库函数的讲解附1:MSDN关于strcpy库函数的简介思路:从上面的MSDN关于strcpy库函数的简介中...
    99+
    2023-06-21
  • c语言strcpy函数的用法是什么
    strcpy函数是C语言中的一个字符串处理函数,其原型如下:```cchar* strcpy(char* dest, const c...
    99+
    2023-09-14
    c语言
  • C语言中的strcpy函数怎么使用
    这篇“C语言中的strcpy函数怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言中的strcpy函数怎么使用”文...
    99+
    2023-06-16
  • C语言中的时间函数clock()和time()你都了解吗
    目录clock函数time函数总结时间函数在编写代码的时候会经常用到,下面就来总结一下clock和time函数的用法,函数原型如下: clock_t __cdecl clock(...
    99+
    2022-11-13
  • C语言模拟实现strcpy与strcat函数详解
    目录一、strcpy函数的介绍1.函数的声明2.函数功能与注意事项3.函数的使用二、模拟实现strcpy函数1.模拟分析2.模拟实现三、strcat函数的介绍1.函数的声明2.函数功...
    99+
    2022-11-13
  • C语言中的柔性数组你了解吗
    目录1.什么是柔性数组2.柔性数组应该如何使用3.柔性数组的替代方案及内存分布对比4.柔性数组有哪些优点总结1.什么是柔性数组 柔性数组就是大小可以变化的数组。 注意跟C99中的变长...
    99+
    2023-05-15
    C语言柔性数组使用 C语言 柔性数组 C语言 数组
  • C语言的运算符你了解吗
    目录前言一、算数运算符(数学运算) + -* / %二、逻辑运算符(判断真假)|| &&> >= < <=!? : ...
    99+
    2022-11-12
  • C语言的结构体你了解吗
    目录结构体内存对齐结构体传参结构体实现位段什么是位段位段在内存中的存储位段的问题总结结构体内存对齐 当我们创建一个结构体变量时,内存就会开辟一块空间,那么在创建结构体变量时内存到底是...
    99+
    2022-11-13
  • 彻底掌握C语言strcpy函数的用法
    目录1.函数介绍1.1.函数接口1.2.函数分析2.库函数strcpy源代码2.1.库函数分析3.模拟实现strcpy函数3.1.模拟实现写在后面strcpy函数详解如下 1.函数介...
    99+
    2022-11-13
  • C语言string库strcpy、strcmp、strcat函数的使用
    目录C语言string库strcpy、strcmp、strcat函数C语言实现各类string函数1.实现strcpy(字符串复制)2.实现strcat3.实现strstr4.实现s...
    99+
    2023-02-24
    C语言string库strcpy C语言string库strcmp C语言string库strcat C语言string库
  • C语言怎么实现strcpy与strcat函数
    这篇文章主要介绍“C语言怎么实现strcpy与strcat函数”,在日常操作中,相信很多人在C语言怎么实现strcpy与strcat函数问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言怎么实现strcpy...
    99+
    2023-06-29
  • 详解C语言中strcpy函数与memcpy函数的区别与实现
    目录字符串拷贝函数(strcpy)函数原型应用实例缺点内存拷贝函数(memcpy)函数原型应用实例memcpy的模拟实现(my_memcpy)实现样例具体实现字符串拷贝函数(strc...
    99+
    2022-12-29
    C语言 strcpy memcpy区别 C语言 strcpy memcpy实现 C语言 strcpy memcpy
  • C语言的多级指针你了解吗
    目录前言一、多级指针概念二、多级指针的使用1.二维指针总结前言 自学笔记,没有历史知识铺垫(省略百度部分)C语言了解多级指针的使用 一、多级指针概念 指向指针的指针 即:存放地址的...
    99+
    2022-11-12
  • C++的内联函数你了解吗
    目录1.概念2.函数演示3.函数特性总结1.概念 以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数压栈的开销,内联函数提升程序运行的效率。...
    99+
    2022-11-13
  • C语言中的柔性数组你真的了解吗
    目录柔性数组概念:特点:与指针动态开辟的比较指针动态开辟柔性数组指针动态开辟的缺点总结柔性数组概念: 柔性数组就是一种特殊的数组 它也是结构体最后一个成员 也就是说,它存在结构体最后...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作