网站flash音乐播放器,济南家居行业网站开发,i57500网站开发,个人购物网站怎么做目录
1. 函数声明及功能
2. 使用示例
3. 注意事项
4. 模拟实现
4.1 第一版#xff1a;基本功能判空const修饰
4.2 第二版#xff1a;优化对于\0的单独拷贝
4.3 第三版#xff1a;仿strcpy的char*返回值 1. 函数声明及功能
char * strcpy ( char * destination, cons…目录
1. 函数声明及功能
2. 使用示例
3. 注意事项
4. 模拟实现
4.1 第一版基本功能判空const修饰
4.2 第二版优化对于\0的单独拷贝
4.3 第三版仿strcpy的char*返回值 1. 函数声明及功能
char * strcpy ( char * destination, const char * source ); strcpy功能字符串拷贝
2. 使用示例
#define _CRT_SECURE_NO_WARNINGS
#includestdio.h
#includestring.h
int main() {char arr1[] hello world;char arr2[15] {0};strcpy(arr2, arr1);printf(%s\n, arr2);return 0;
}
3. 注意事项
1、拷贝源字符串时以\0作为拷贝结束标志且将\0也拷贝到目标空间可通过将目标空间初始化为非0字符来验证
#define _CRT_SECURE_NO_WARNINGS
#includestdio.h
#includestring.h
int main() {char arr1[] hello world;char arr2[15] xxxxxxxxxxxxxxx;strcpy(arr2, arr1);printf(%s\n, arr2);return 0;
}
调试监视arr数组各元素 2、目标空间必须足够大以接收源字符串否则程序会报错 3、目标空间内容必须可修改常量字符串、const修饰的变量等均不可作为目标空间 4. 模拟实现
4.1 第一版基本功能判空const修饰
#define _CRT_SECURE_NO_WARNINGS
#includestdio.h
#includeassert.h
void my_strcpy1(char* dest, const char* src) {assert(src ! NULL);assert(dest ! NULL);// 拷贝\0之前的内容while (*src ! \0) {*dest *src;src;dest;}// 拷贝\0*dest *src;
}
int main() {char arr1[] hello world;char arr2[15] { 0 };my_strcpy1(arr2, arr1);printf(%s\n, arr2);return 0;
}
4.2 第二版优化对于\0的单独拷贝
#includeassert.h
void my_strcpy2(char* dest, const char* src) {assert(src ! NULL);assert(dest ! NULL);while (*dest *src) {;}
}
int main() {char arr1[] hello world;char arr2[15] { 0 };my_strcpy2(arr2, arr1);printf(%s\n, arr2);return 0;
}
注虽然的优先级高于*但由于为后置故*dest实际上是对dest解引用后再 将*dest *src 置于while判断条件中由于判断条件需先执行后判断
while (*dest *src) 写法既完成了\0的拷贝也使得条件为假跳出循环
4.3 第三版仿strcpy的char*返回值
查strcpy文档关于其参数及返回值介绍如下 返回类型为char*返回值为destination即目标空间的起始地址
cplusplus.com网址如下
strcpy - C Referencehttps://legacy.cplusplus.com/reference/cstring/strcpy/?kwstrcpy现修改代码如下
#includestdio.h
#includeassert.h
char* my_strcpy3(char* dest, const char* src) {assert(src ! NULL);assert(dest ! NULL);char* ret dest;while (*dest *src) {;}return ret;
}
int main() {char arr1[] hello world;char arr2[15] { 0 };my_strcpy3(arr2, arr1);printf(%s\n, arr2);return 0;
}