鱼C论坛

 找回密码
 立即注册
查看: 873|回复: 2

[已解决]C语言的string.h

[复制链接]
发表于 2024-1-25 15:34:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
问一下memcpy和memset的用法,含义,逻辑分别是什么
最佳答案
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,此函数多用于初始化特定的内存数据区。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[20];
        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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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,此函数多用于初始化特定的内存数据区。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 23:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表