c语言字符串复制memcpy,C语言string字符串函数memset()、memchr()、memcpy()\strcat()、strncat()、strchr()...

1.memchr()

原型:void memchr(const void str, int c, size_t n)

作用:在str的前n个字节中寻找c

返回值:一个指向匹配字节的指针 否则空指针(第一个匹配的值的指针)

2.strchr()

原型:charstrchr(const char*s,int c)

返回值:匹配字节的指针

区别:memchr检测的是一段内存,strchr检测的是一个字符串 如果一段内存中有0x0的话,不能用strchr去查找的,因为遇到0x0会当作字符串的结束符停止。而mem是根据后面的n停止。

#include

#include

int main()

{

char *p1,*p2;

char ch[]={"Nthing is impossible,Believe yourself!"};

p1=(char*)memchr(ch,'i',strlen(ch));

p2=strchr(ch,'i');

printf("Memchr()搜索i:%s\n strhr()搜索i:%s",p1,p2);

return 0;

}

运行结果:

Memchr()搜索i:ing is impossible,Believe yourself!

strhr()搜索i:ing is impossible,Believe yourself!

结果两者一样。

3.memcpy()

原型:void *memcpy(void *destin, void *source, unsigned n);

功能:从源source所指的内存地址的起始位置开始拷贝n个字节到目标destin所指的内存地址的起始位置中。

返回值:指向存储区的指针

4.strcpy()

原型:char strcpy(char dest, const char *src);

返回值:指向dest的指针

memcpy(b,a,sizeof(int)*k);//数组

strcpy(b,a); //字符串

memcpy()与strcpy()

1、复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。

2、复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。

3、用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy

5.memset()

原型:void *memset(void *s, int ch, size_t n);

功能:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。

char a[50];

memset(a,0,sizeof(char)*50);//将a内元素初始化为0

6.strcat()

原型:char *strcat(char *de, const char *str)

功能:将str字符串添加在de后方

7.strncat()

原型:char *strncat(char *dest, const char *src, size_t n)

strcat函数无法检验第一个数组能否容纳第二个字符串 于是提供了strncat()函数

例如strncat(a,b,10);则把b中的10个元素加入a并添加\0;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值