memset、bcopy、memcpy、memccpy、memmove、memcmp、strcpy、strncpy、strdup
备注笔记
·
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个字符
相关函数:bcmp
、strcasecmp
、strcmp
、strcoll
、strncmp
、strncasecmp
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);
}
更多推荐
所有评论(0)