C语言的strcpy函数你了解吗

作者:威威沁沁

这篇文章主要为大家详细介绍了C语言的strcpy函数,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

strcpy

拷贝字符串到目标地址

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

参数 destination source
解释 目标字符串地址 以 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是目的地必须是可修改的。

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

您可能感兴趣的文章:
  • C++ Boost Conversion超详细讲解
    C++ Boost Conversion超详细讲解
    2022-11-11
  • Qt实现定时器的两种方法分享
    Qt实现定时器的两种方法分享
    2022-11-11
  • C语言中pow函数使用方法、注意事项以及常见报错原因
    C语言中pow函数使用方法、注意事项以及常见报错原因
    2022-11-11
  • c++类成员函数如何做函数参数
    c++类成员函数如何做函数参数
    2022-11-11
  • C语言中strcpy()函数的具体实现及注意事项
    C语言中strcpy()函数的具体实现及注意事项
    2022-11-11
  • C++ Boost ProgramOptions超详细讲解
    C++ Boost ProgramOptions超详细讲解
    2022-11-11
  • Qt实现UDP通信的示例代码
    Qt实现UDP通信的示例代码
    2022-11-11
  • Qt实现字幕无间隙滚动效果
    Qt实现字幕无间隙滚动效果
    2022-11-11
  • 美国设下计谋,用娘炮文化重塑日本,已影响至中国
    美国设下计谋,用娘炮文化重塑日本,已影响至中国
    2021-11-19
  • 时空伴随者是什么意思?时空伴随者介绍
    时空伴随者是什么意思?时空伴随者介绍
    2021-11-09
  • 工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终
    工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终
    2021-11-05
  • 2022年放假安排出炉:五一连休5天 2022年所有节日一览表
    2022年放假安排出炉:五一连休5天 2022年所有节日一览表
    2021-10-26
  • 电脑版 - 返回首页

    2006-2023 脚本之家 JB51.Net , All Rights Reserved.
    苏ICP备14036222号