C语言的string.h
问一下memcpy和memset的用法,含义,逻辑分别是什么 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: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]