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中去,大家觉得结果会是什么?