本节重点内容:
strcpy的基本使用:
#define _CRT_SECURE_NO_WARNINGS
#include
#includeint main()
{char arr1[] = "abcdef";char arr2[20] = { 0 };strcpy(arr2, arr1);//将arr1的数据拷贝到arr2中printf("%s\n", arr2);return 0;
}
运行结果如下:
下面来举几个相关的例子:
1. 源字符串必须以 '\0' 结束,否则无法进行正确拷贝。
#define _CRT_SECURE_NO_WARNINGS
#include
#includeint main()
{char arr1[] = { 'a','b','c' };char arr2[20] = "xxxxxxxx";strcpy(arr2, arr1);printf("%s\n", arr2);return 0;
}
//此程序会崩溃
2. strcpy会将源字符串中的 '\0' 拷贝到目标空间。
#define _CRT_SECURE_NO_WARNINGS
#include
#includeint main()
{char arr1[] = "abc\0def";char arr2[20] = "xxxxxxxx";strcpy(arr2, arr1);printf("%s\n", arr2);return 0;
}
代码运行结果如下:
3. 目标空间必须足够大,以确保能存放源字符串。
#define _CRT_SECURE_NO_WARNINGS
#include
#includeint main()
{char arr1[] = "abcdef";char arr2[3] = { 0 };strcpy(arr2, arr1);printf("%s\n", arr2);return 0;
}
程序报错:
4. 目标空间必须可以修改。
#define _CRT_SECURE_NO_WARNINGS
#include
#includeint main()
{char* p = "abcdef"; //指针所指向的字符串为常量字符串,其内容不能被修改。char arr2[20] = "JX_BC";strcpy(p, arr2);printf("%s\n", arr2);return 0;
}
//该程序会崩溃
#define _CRT_SECURE_NO_WARNINGS
#include
#include//返回目标空间的起始位置
char* my_strcpy(char* dest, const char* src)//源头的数据不能发生变化,因此加上const进行保护
{char* start = dest;assert(dest && src);//断言保证两个指针有效while (*dest++ = *src++){;}return start;
}int main()
{char arr1[] = "abcdef";char arr2[20] = { 0 };my_strcpy(arr2, arr1);printf("%s\n", arr2);//printf("%s\n", my_strcpy(arr2, arr1));return 0;
}
代码运行结果如下:
感谢大家能够看完这篇博客,创作时长,小伙伴们觉得我的博客对你有帮助,不妨留下你的点赞的收藏,关注我,带你了解不一样的C语言。