C语言string字符串函数memset()、memchr()、memcpy()\strcat()、strncat()、strchr()

旧巷老猫 提交于 2020-02-28 05:29:55

1.memchr()
原型:void memchr(const void str, int c, size_t n)
作用:在
str的前n个字节中寻找c
返回值:一个指向匹配字节的指针 否则空指针(第一个匹配的值的指针)
2.strchr()
原型:char
strchr(const char*s,int c)
返回值:匹配字节的指针
区别:memchr检测的是一段内存,strchr检测的是一个字符串 如果一段内存中有0x0的话,不能用strchr去查找的,因为遇到0x0会当作字符串的结束符停止。而mem是根据后面的n停止。

#include<stdio.h>
#include<string.h>
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,0sizeof(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;

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!