用 C 语言写一个函数,实现内存拷贝功能(不调用库函数)
时间: 2024-04-29 16:26:08 浏览: 20
好的,我可以帮您回答这个问题。以下是一个简单的内存拷贝函数实现,使用C语言编写:
```c
void *mem_copy(void *dest, const void *src, size_t n) {
char *csrc = (char *)src;
char *cdest = (char *)dest;
for (int i = 0; i < n; i++) {
cdest[i] = csrc[i];
}
return dest;
}
```
该函数将源内存区域的内容复制到目标内存区域中,并返回目标内存区域的开始地址。由于该函数使用char指针进行复制,因此可以处理任何数据类型的内存复制。 您可以按以下方式调用此函数:
```c
char src[10] = "Hello";
char dest[10];
mem_copy(dest, src, 5);
```
该模块将"Hello"从src复制到了dest中,复制了前5个字符。
相关问题
自定义字符串拷贝函数mystrcpy实现库函数strcpy的功能。输入一个字符串a,通过调用函数mystrcpy(b,a)将字符串a的内容拷贝到字符数组b中,然后输出字符串b。
以下是自定义字符串拷贝函数mystrcpy的实现:
```c
#include <stdio.h>
void mystrcpy(char *dest, const char *src) {
while (*src != '\') {
*dest = *src;
dest++;
src++;
}
*dest = '\';
}
int main() {
char a[] = "Hello, world!";
char b[20];
mystrcpy(b, a);
printf("%s\n", b);
return ;
}
```
在上面的代码中,我们定义了一个自定义字符串拷贝函数mystrcpy,它的参数包括一个目标字符数组dest和一个源字符数组src。函数的实现很简单,就是通过while循环遍历源字符数组src,将每个字符逐一拷贝到目标字符数组dest中,直到遇到字符串结束符'\'为止。
在主函数中,我们定义了一个源字符数组a和一个目标字符数组b,然后调用mystrcpy函数将a的内容拷贝到b中,并输出b的内容。运行程序,输出结果为:
```
Hello, world!
```
这说明我们的自定义字符串拷贝函数mystrcpy已经成功地实现了库函数strcpy的功能。
编写一个类似库函数strcat()的函数,函数中使用指针,实现两个字符串的连接,并在main()函数中验证该自定义函数的功能。请用C语言回答。
可以使用下面的代码实现:
```
#include <stdio.h>
char *my_strcat(char *dest, const char *src)
{
char *p = dest;
while (*p != '\0') {
p++;
}
while (*src != '\0') {
*p = *src;
p++;
src++;
}
*p = '\0';
return dest;
}
int main()
{
char str1[20] = "Hello, ";
char str2[] = "world!";
my_strcat(str1, str2);
printf("%s\n", str1);
return 0;
}
```
在函数中,使用指针变量遍历目标字符串,找到其末尾的位置,然后使用另一个指针变量遍历源字符串,将源字符串的字符逐个拷贝到目标字符串的末尾。最后在目标字符串的末尾添加一个字符串结束符`\0`。
在主函数中,定义两个字符串,调用自定义函数将它们连接起来,然后输出结果。