C标准库<string.h>-mem开头的函数

void *memchr(const void *str, int c, size_t n)

函数功能

在参数str所指向的内存区域的前n个字节中搜索第一次出现字符c(转换为无符号字符类型)的位置。

参数解释

  1. str:指向要被搜索的内存区域的指针。
  2. c:要搜索的字符,以整数形式给出,但会被转换为无符号字符类型进行搜索。
  3. n:指定要搜索的字节数。

返回值

如果找到字符c,则返回指向字符c在内存区域中第一次出现位置的指针;如果在给定的内存区域中没有找到字符c,则返回一个空指针。

函数实现

函数用法

#include <stdio.h>
#include <string.h>
 
int main ()
{
   const char str[] = "http://www.runoob.com";
   const char ch = '.';
   char *ret;
 
   ret = (char*)memchr(str, ch, strlen(str));//原函数的返回值类型是“void *”,
//这里我们用强制类型转换将其变成一个“char *”,就可以输出“ch”及其之后的字符了
 
   printf("|%c| 之后的字符串是 - |%s|\n", ch, ret);
 
   return(0);
}
|.| 之后的字符串是 - |.runoob.com|

二、

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

int main() {
    const char *str = "Hello,World!";
    int c = 'W';
    int n = strlen(str);

    // 使用 memchr 查找字符 'W'
    char *result = (char *) memchr(str, c, n);

    if (result) {
        // 计算找到的字符在字符串中的位置
        int position = result - str+1;
        printf("Character '%c' found at position: %d\n", c, position);
    } else {
        printf("Character '%c' not found.\n", c);
    }

    return 0;
}
Character 'W' found at position: 7
请按任意键继续. . .

 int memcmp(const void *str1, const void *str2, size_t n)) 

函数功能

用于比较两个内存块(str1,str2),前n个字节的内容

参数解释

  • str1 -- 指向内存块的指针。
  • str2 -- 指向内存块的指针。
  • n -- 要被比较的字节数。

返回值

  • 如果返回值 < 0,则表示 str1 小于 str2。
  • 如果返回值 > 0,则表示 str1 大于 str2。
  • 如果返回值 = 0,则表示 str1 等于 str2。

函数实现



函数用法

通过“函数实现”我们可以知道这个函数对比两个字符串,当遇到不同的时候就做出判断,如果返回值 < 0,则表示 str1 小于 str2。如果返回值 > 0,则表示 str1 大于 str2。如果返回值 = 0,则表示 str1 等于 str2。

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

int main() {
    const char *str1 = "Hyllo";
    const char *str2 = "Horld";
    int n = 5; // 比较前5个字符

    int result = memcmp(str1, str2, n);

    if (result == 0) {
        printf("The memory areas are equal.\n");
    } else if (result < 0) {
        printf("The first memory area is less than the second.\n");
    } else {
        printf("The first memory area is greater than the second.\n");
    }

    return 0;
}
The first memory area is greater than the second.
请按任意键继续. . .

void *memcpy(void *str1, const void *str2, size_t n)

函数功能

memcpy 函数用于从源内存地址复制指定数量的字节到目标内存地址。

参数解释

  • str1:指向目标内存区域的指针,数据将被复制到这里。
  • str2:指向源内存区域的指针,数据将从这里复制。
  • n:要复制的字节数。

返回值

返回指向目标内存区域 str1 的指针。

函数实现

函数用法

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

int main() {
    char src[] = "Hello, World!";
    char dest[20]; // 确保有足够的空间来存储复制的数据

    // 将 src 复制到 dest
    memcpy(dest, src, strlen(src) + 1); // 加1以包括空字符 '\0'

    printf("Source: %s\n", src);
    printf("Destination: %s\n", dest);

    return 0;
}
Source: Hello, World!
Destination: Hello, World!
请按任意键继续. . .

void *memmove(void *str1, const void *str2, size_t n)

函数功能

memmove 函数用于从源内存地址复制指定数量的字节到目标内存地址。与 memcpy 不同的是,memmove 可以处理源和目标内存区域重叠的情况。

参数解释

  • str1:指向目标内存区域的指针,数据将被复制到这里。
  • str2:指向源内存区域的指针,数据将从这里复制。
  • n:要复制的字节数。

返回值

返回指向目标内存区域 str1 的指针

函数实现

函数用法

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

int main() {
    char str[] = "abcdefghijklmn";
    // 将从 str + 2 开始的 5 个字节复制到 str + 7
    memmove(str + 7, str + 2, 5);
    printf("%s\n", str);
    return 0;
}
abcdefgcdefgmn
请按任意键继续. . .

void *memset(void *str, int c, size_t n)

函数功能

memset 函数用于将指定的值填充到内存区域的指定字节数中。这个函数通常用于初始化数组或清空内存区域。

参数解释

  • str -- 指向要填充的内存区域的指针。
  • c -- 要设置的值,通常是一个无符号字符。
  • n -- 要被设置为该值的字节数。

返回值

该值返回一个指向存储区 str 的指针。

函数实现

函数用法

#include <stdio.h>
#include <string.h>
 
int main ()
{
   char str[50];
 
   strcpy(str,"This is string.h library function");
   puts(str);
 
   memset(str,'$',7);
   puts(str);
   
   return(0);
}

This is string.h library function
$$$$$$$ string.h library function
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值