————今天是周六!早上起来去牛客网写了四个图形的题 哈哈哈 圣诞树有点难 寻思打开博客写点什么东西emm
想了一下 先写个memset
memset
将一个目标字符串中的指定位置替换成指定内容
1.memset的声明
2.头文件
#include<string.h>
3.返回值
void类型 不需要返回值;
4.memset的使用
int main()
{
char arr1[] = "we are happy";
memset(arr1, '*', 3);
printf("%s",arr1);
return 0;
}
5.结果
6.memset的实现
void my_memset(char* ptr, int value, int num)
{
char* ret = ptr;
while (num)
{
*ret = value;
ret++;
num--;
}
}
int main()
{
char arr1[] = "we are happy!";
my_memset(arr1, '-', 3);
printf("%s", arr1);
return 0;
}
6.1结果
(二)memmove
memove同一数组中覆盖;
1.memmove的声明
2.头文件
#include<string.h>
3.memmove的使用
int main()
{
char str[] = "12345678910";
memmove(str , str + 5, 5);
puts(str);
return 0;
}
4.结果
5.my_memmove的实现
如图哈哈
void* my_memmove(void* dest,const void* sour, size_t num)
{
assert(dest && sour);
void*ret = dest;
if (dest < sour)
{
while (num--)
{
*(char*)dest = *(char*)sour;
dest = (char*)dest + 1;
sour = (char*)sour + 1;
}
}
else
{
while (num--)
{
*((char*)dest+num)=*((char*)sour+num);
}
}
return ret;
}
void print(int* arr, int sz)
{
for (int i = 0; i < sz; i++)
{
printf("%d", arr[i]);
}
}
int main()
{
int str[10] = {1,2,3,4,5,6,7,8,9,10};
my_memmove(str, str + 3, 20);
int sz = sizeof(str) / sizeof(str[0]);
print(str, sz);
return 0;
}