青海建设厅网站通知,dw网页制作教程个人网站,安阳网站建设开发,网站优化步骤文章目录 strcpy函数描述函数使用总结目标空间为什么必须可变#xff1f;模拟实现 strcpy函数描述 重点#xff1a;including the terminating null character (and stopping at that point).意为拷贝的值包括停止字符 传参时第一个参数为要拷贝参数#xff0c;第二个参数为… 文章目录 strcpy函数描述函数使用总结目标空间为什么必须可变模拟实现 strcpy函数描述 重点including the terminating null character (and stopping at that point).意为拷贝的值包括停止字符 传参时第一个参数为要拷贝参数第二个参数为被拷贝参数
函数使用 #includestdio.h
#includestring.hint main() {char str1[20] abcdefg;char str2[] zxcv;strcpy(str1, str2);printf(%s\n, str1);return 0;
}结果 拷贝之后 可知在拷贝时‘\0’也被拷贝过来了。 2. //提前结束被拷贝的字符串
#define _CRT_SECURE_NO_WARNINGS #includestdio.h
#includestring.hint main() {char str1[20] abcdefg;char str2[] zxcvv\0bnm;strcpy(str1, str2);printf(%s\n, str1);return 0;
}结果 拷贝后的结果
总结
1.目标空间必须足够大且可变 2.结束字符也会被拷贝过去 3源字符串必须以‘\0’结束
目标空间为什么必须可变
错误示例
#includestdio.h
#includestring.hint main() {char* p abcdefg;char str2[] zxcv;strcpy(p, str2);printf(%s\n, *p);return 0;
}目标字符串常量字符串不允许被修改必须写成数组的形式
模拟实现
#includestdio.h
#includeassert.hchar* my_strcpy(char* dest,const char* src)
{//函数返回值为目标空间的起始地址*dest *src会改变dest的地址所以要先保存char* ret dest;assert(src dest);while (*dest *src) //加到最后先把结束字符拷贝过去然后在判定循环是否可以再运行{;}return ret;
}int main() {char str1[20] xxxx;char str2[] abcdefghi;my_strcpy(str1, str2);printf(%s\n, str1);return 0;
}所传参数为地址所以两个参数都要进行判空操作都不能为空指针