【C】mem--系列函数介绍

1、memchar

const void * memchr ( const void * ptr, int value, size_t num );
      void * memchr (       void * ptr, int value, size_t num );

查找ptr指向的前num个字节中,value第一次出现的位置。

如果没找到,则返回NULL;

(注:在未找完num个字节是不会停的,所以要考虑越界访问的问题,这一系列的函数都是如此,后面就不写这段话了)

 示例:

#include<stdio.h>
#include<string.h>

int main()
{
	char* p1 = "abcdef";
	char* ret = (char*)memchr(p1, 'c', 4);//获取 'c' 的位置

	printf("%c\n", *ret);//验证 memchr 返回的是否是 'c' 的地址
}

运行结果: 

2、memcmp

int memcmp ( const void * ptr1, const void * ptr2, size_t num );

依次比较ptr1和ptr2两者指向的前num个字节,各个字节的存储的内容的大小。终止于 第一个不相等的字节。

ptr1=ptr2     返回0

//比较的是第一个不相等的字节

ptr1>ptr2     返回>0的数

ptr1<ptr2     返回<0的数

示例: 

char* p1 = "abcdef";
char* p2 = "abcder";
int ret = memcmp(p1, p2, 6);

printf("%d\n", ret);

 运行结果:

注:memecmp的返回值并没有规定只能是1或-1。在VS下是1或-1.

 3、memcpy

void * memcpy ( void * ptr1, const void * ptr2, size_t num );

将ptr2的num个字节复制到ptr1中。

示例:

char arr1[] = "abcdef";
char arr2[] = "123456";
memcpy(arr1, arr2, 4);
printf("arr2复制到arr1结果:%s\n", arr1);

//不要再这种情况下使用此函数,后面有更安全的函数。
memcpy(arr2 + 2, arr2, 4);
printf("arr2自身复制结果:%s\n", arr2);//自己复制自己的操作可行,但不安全。

 运行结果:

4、memmove 

自己复制自己的memcpy。

5、memset

void * memset ( void * ptr, int value, size_t num );

给ptr前num个字节赋值为value

 示例:

char arr1[] = "abcdef";
memset(arr1 + 1, '0', 4);

printf("%s", arr1);

结果:

相关推荐

  1. CMEMS数据下载

    2024-04-12 20:24:01       58 阅读
  2. Python函数——函数介绍

    2024-04-12 20:24:01       56 阅读
  3. Python——函数介绍

    2024-04-12 20:24:01       54 阅读
  4. 【Python函数——详细介绍

    2024-04-12 20:24:01       55 阅读
  5. torch.mm函数介绍

    2024-04-12 20:24:01       34 阅读
  6. cmake 函数功能介绍

    2024-04-12 20:24:01       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-12 20:24:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-12 20:24:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-12 20:24:01       87 阅读
  4. Python语言-面向对象

    2024-04-12 20:24:01       96 阅读

热门阅读

  1. 前端 js 经典:字符编码详解

    2024-04-12 20:24:01       44 阅读
  2. 【QT教程】QT6SVG处理

    2024-04-12 20:24:01       36 阅读
  3. 我的 Lisp 学习历程:从新手到熟练掌握

    2024-04-12 20:24:01       44 阅读
  4. RK3399广告机主板板刷armbian--改固件方法

    2024-04-12 20:24:01       249 阅读
  5. 跟大家分享一个自增的主键id策略OUID

    2024-04-12 20:24:01       44 阅读
  6. 数据结构(初阶):顺序表实战通讯录

    2024-04-12 20:24:01       31 阅读
  7. LeetCode hot100-25

    2024-04-12 20:24:01       42 阅读
  8. CDF与PDF(描述随机变量的分布情况)

    2024-04-12 20:24:01       39 阅读