memset

将一段内存空间填充某值,将某一数组做初始化十分方便。

#include<string.h>
void *memset(void* s, int c, size_t n); // 将参数 s 所指的内存区域前 n 个字节以参数 c 填入[0, 255],然后返回指向 s 的指针

bcopy

拷贝内存。

#include<string.h>
void bcopy(const void *src, void *dest, int n); // 用来拷贝src所指向的内存内容的前n个字节到dest所指的地址

memcpy

拷贝内存内容。

#include<string.h>
void* memcpy(void* dest, const void* src, size_t n); // 用来拷贝 src 所指向的内存内容前 n 个字节到 dest 所指的内存地址上,并不会因为遇到 '\0' 而结束,返回指向dest的指针

memccpy

拷贝内存内容。

#include<string.h>
void* memccpy(void *dest, const void *src, int c, size_tn); // 用来拷贝src所指向内存内容前n个字节到dest所指的地址上,与memcpy不同的是,它会在复制时检查参数c是否出现,若是则返回dest中值为c的下一个字节的地址。返回值:返回指向dest中值为c的下一个字节指针,返回值为0表示src所指内存前n个字节中没有值为c的字节。

memmove

拷贝内存内容。

#include<string.h>
void* memmove(void *dest, const void *src, size_t n);// 当src和dest所指的内存区域重叠时,与memcpy()不同的是,memmove仍然可以处理

memcmp

比较内存内容。

#include<string.h>
int memcmp(const void *s1, const void *s2, size_t n); // 用来比较s1和s2所指的内存区间前n个字符

相关函数:bcmpstrcasecmpstrcmpstrcollstrncmpstrncasecmp

strcpy

拷贝字符串。

#include<string.h>
char* strcpy(char* dest, const char* str); // 将参数 src 字符串拷贝至参数 dest 所指的地址,返回参数dest字符串起始地址

如果dest所指的内存空间不够大,可能会造成缓冲区溢出的错误情况。

strncpy

拷贝字符串。

#include<string.h>
char* strncpy(char* dest, const char* src, size_t n); // 将参数src字符串拷贝前n个字符至参数dest所指的地址,返回参数dest的字符串起始地址

strdup

复制字符串。

#include<string.h>
char* strdup(const char *s); //strdup()会先用malloc()配置与参数s字符串相同的空间大小,然后将参数s字符串的内容复制到该内存地址,然后把该地址返回,该地址可以使用free()来释放,返回一字符串指针,该指针指向复制后的新字符串地址,若返回NULL则表示内存不足。
#include<string.h>
int main()
{
	char a[]="strdup";
	char *b;
	b = strdup(a)\
	printf("b=%s", b);
}
Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐