davidmou 发表于 2024-1-25 15:34:03

C语言的string.h

问一下memcpy和memset的用法,含义,逻辑分别是什么

FishC 发表于 2024-1-25 15:35:20

memcpy和memset是C语言中常用的字符串操作函数,都在string.h头文件中声明。

- memcpy函数的原型为:void *memcpy(void *dest, const void *src, size_t n)。
- 参数dest是目标地址,src是源地址,n是要拷贝的字节数。
- 功能是将源地址src的内容拷贝到目标地址dest处,拷贝的长度是n个字节。
- 返回值是指向目标地址dest的指针。注意:如果源地址和目标地址有重叠,就无法保证拷贝的结果是正确的。
- 使用示例:
    #include <stdio.h>
    #include <string.h>

    int main() {
      char src[] = "Hello, World!";
      char dest;
      memcpy(dest, src, strlen(src) + 1);
      printf("拷贝的字符串是:%s\n", dest);
      return 0;
    }
    输出结果为:拷贝的字符串是:Hello, World!

- memset函数的原型为:void *memset(void *s, int c, size_t n)。
- 参数s是要填充的目标地址,c是要填充的字符的ASCII码,n是要填充的字节数。
- 功能是将目标地址s开始的n个字节都设置为字符c。
- 返回值是指向目标地址s的指针。
- 使用示例:
    #include <stdio.h>
    #include <string.h>

    int main() {
      char str[] = "*********";
      memset(str, '*', 5);
      printf("填充后的字符串是:%s\n", str);
      return 0;
    }
    输出结果为:填充后的字符串是:*****

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

jackz007 发表于 2024-1-25 16:30:18

本帖最后由 jackz007 于 2024-1-25 16:32 编辑

void * memcpy(void * dest, const void * src , size_t n)
从内存地址 src 开始,复制 n 个字节的数据到内存地址 dest,并返回内存地址 dest。此函数多用于复制特定的内存数据区(如结构、数组等)。

void * memset(void * s , int c , size_t n)
从内存地址 s 开始,填充 n 个字节数据 c(数值为 c),并返回内存地址 s,此函数多用于初始化特定的内存数据区。   
页: [1]
查看完整版本: C语言的string.h