目录
(一)strcpy的实现
strcpy的作用是将源字符串拷贝到目的地的字符串中(覆盖)
在cplusplus中
1.函数的声明;
2. 函数的头文件;
#include<string.h>
4.strcpy的函数使用
strcpy函数是将一个字符串的全部内容(包括'\0')拷贝到另一个字符串里。
int main()
{
char arr1[30] = "#############";
char arr2[10] = "zzdqs";
strcpy(arr1, arr2);
printf("%s\n", arr1);
printf("%s\n", arr2);
}
4.1结果;
5.my_strcpy的实现;
asser是断言判断传递过来的是否为空指针
函数需要返回到原dest的地址
所以将dest的地址存入一个指针ret中;
循环实现dest和sour中值的覆盖(此时dest的空间需要足够大)
当*sour的内容为‘\0’时结束循环;然后返回ret;
#include<assert.h>
char* my_strcpy(char* dest, const char* str)
{
assert(*dest != NULL);
assert(*str != NULL);
char* ret = dest;
while (*dest++ = *str++)
{
;
}
return ret;
}
int main()
{
char arr1[] = "abcdefghi";
char arr2[] = "zzp";
my_strcpy(arr1, arr2);
printf("%s\n", arr1);
printf("%s\n", arr2);
return 0;
}
(二)strncpy的使用
1.strncpy的声明:
在strcpy的基础上按个数覆盖
2.strncpy的头文件
#include<string.h>
3.strncpy的使用
int main()
{
char arr1[30] = "abcdef";
char arr2[20] = "ghij";
int num = 4;
printf("%s\n", strncpy(arr1, arr2, num));
return 0;
}
4.结果;
5.my_strncpy的实现
以num给定的数 复制源字符串到目的地上;
//模拟实现strncpy
char* my_strncpy(char* dest, char* sour, size_t num)
{
char* p = dest;
while (num)
{
*dest++ = *sour++;
num--;
}
return p;
}
int main()
{
char arr1[30] = "abcdef";
char arr2[20] = "ghij";
int num = 4;
printf("%s\n", my_strncpy(arr1, arr2, num));
return 0;
}