strcpy()的使用
char* strcpy(char * destination, const char * source );
- 源字符串必须以字符 ‘\0’ 结束。
- 拷贝时会将源字符串的 ‘\0’ 也一并拷贝到目地地址。
- 目的地址空间必须足够大,能够存下源字符串的所有字符。
- 目的地址空间必须是可以被修改的。
// 使用strcpy()例子
int main()
{
char* p = "abc"; //指针指向的是常量字符串的首字母,常量字符串是不允许被修改的!!!
char arr[20] = { 0 };
strcpy(arr, p);
printf("%s\n", arr);
return 0;
}
模拟实现strcpy()
分析该函数是如何复制字符串功能的。
模拟实现方法1
void my_strcpy(char* dest, char* src)
{
//复制字符串中'\0'之前的所有字符,不包括'\0'。
while (*src != '\0')
{
*dest = *src;
src++;
dest++;
}
//当循环停止后,还剩下'\0'没有复制到目的地。
*dest = *src; // 循环停止的条件是 *src=='\0',此时将其赋值给*dest,就搞定了。
}
int main()
{
char arr1[] = "abc";
char arr2[10] = "*********";
my_strcpy(arr2, arr1);
printf("%s\n", arr2);
return 0;
}
升级版本
char* my_strcpy(char* dest, const char* src)
{
char* ret = dest; // ret 保存目的空间的首地址,便于作函数的返回值。
assert(src&&dest); //断言有效的地址。
while (*dest++ = *src++)
{
;
}
return ret;
}
int main()
{
char arr1[] = "abc";
char arr2[10] = "*********";
printf("%s\n", my_strcpy(arr2, arr1));
return 0;
}