memset,memcpy,strcpy, strncpy,strcat,strncat,strcmp区别

memset

将已开辟内存空间 s 的首 n 个字节的值设为值 c(给空间初始化)。这个函数通常为新申请的内存做初始化工作。

用法:

void *memset(void *s, int c, size_t size);

memcpy

拷贝内存上的每个字节的内容到目标内存
用法:

void *memcpy(void *dest, const void *src, size_t n);

strcpy

strcpy是长度不受限制的字符串函数。意思是把src里面得内容拷贝到dest里面

char *strcpy(char *dest, char *src);

返回值:返回参数dest的字符串起始地址.
说明:

  • 如果dest所指能存不大,可能会导致内存溢出的情况。
  • 该函数的参数是字符指针,但是可以是字符串变量和字符数组。
  • 字符串默认结束有一个null结束符,而字符数组没有。所以应该注意src要求有null结束符,所以字符数组的长度必须大于等于字符串长度加null结束符的总长度。

重写strcpy

#include<stdio.h>
#include<assert.h>

char *my_strcpy(char *dest, const char *src){
	assert(dest && src);
	char *start = dest;
	while(*desc++  = *src++){
		;
	}
	return start;
}

strncpy

将字符串src中最多n个字符复制到字符数组dest中。
返回值:返回参数为dest字符串的起始地址。

char *strncpy(char *desc, char *src, size_t n);

说明:

  • 如果n大于dest的长度,会导致dest栈内存溢出。
  • 如果如果没有初始化dest,直接将n个字符复制到dest中,由于没有null结尾,直接访问dest会导致异常。所以使用dest之前最好用memset将dest用null填充。
  • 如果n =dest串长度,则dest串没有NULL字符,会导致输出会有乱码。

strcat

把src所指字符串添加到dest结尾处。

char *strcat(char *dest, char *src);

返回值:返回参数为dest字符串的起始地址。

注意:

  • dest和src的内存空间不可以重叠,即strcat不能连接同一个字符串。
  • dest有足够大的内存来容纳src字符串,否则会导致内存泄漏。

strncat

字符串src的开头拷贝n 个字符到dest字符串尾部。

char *strncpy(char *dest, char *src, size_t n);

strcmp

是比较函数,若str1=str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数。

int strcmpy(const char *dest, const char *src);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值