C 标准库 - string.h之memchr使用

memchr

  • Locate character in block of memory,Searches within the first num bytes of the block of memory pointed by ptr for the first occurrence of ch (interpreted as an unsigned char), and returns a pointer to it.
  • 在参数 ptr 所指向的字符串的前 count 个字节中搜索第一次出现字符 ch(一个无符号字符)的位置。
  • Both ch and each of the bytes checked on the the ptr array are interpreted as unsigned char for the comparison.
  • 在 ptr 所指向对象的首 count 个字符(每个都转译成 unsigned char )中寻找 ch (在如同以 (unsigned char)ch 转换到 unsigned char 后)的首次出现。
  • 若访问出现于被搜索的数组结尾后,则行为未定义。
  • 若 ptr 为空指针则行为未定义。
  • 此函数表现如同它按顺序读取字符,并立即于找到匹配的字符时停止:
    • 若 ptr 所指向的字符数组小于 count ,但在数组中找到匹配,则行为良好定义。
void* memchr( const void* ptr, int ch, size_t count );

Parameters

ptr

  • Pointer to the block of memory where the search is performed.
  • 指向要检验的对象的指针

ch

  • ch to be located. The ch is passed as an int, but the function performs a byte per byte search using the unsigned char conversion of this ch.
  • 要搜索的字符
  • 以 int 形式传递的值,但是函数在每次字节搜索时是使用该值的无符号字符形式。

count

  • Number of bytes to be analyzed,size_t is an unsigned integral type.
  • 要检验的最大字符数

Return Value

  • A pointer to the first occurrence of ch in the block of memory pointed by ptr.
    If the ch is not found, the function returns a null pointer.
  • 指向字符位置的指针,或若找不到该字符则为 NULL 。
  • 该函数返回一个指向匹配字节的指针,如果在给定的内存区域未出现字符,则返回 NULL。

Example

//
// Created by zhangrongxiang on 2018/2/8 14:10
// File memchr
//

//C 库函数 void *memchr(const void *str, int c, size_t n)
// 在参数 str 所指向的字符串的前 n 个字节中搜索第一次出现字符 c(一个无符号字符)的位置。

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

int main() {
    //字符串
    char str[] = "I am your God";
    //数组
    int arr[] = {10, 20, 30, 40, 50, 60, 70, 80, 90};
    char *position = (char *) memchr(str, 'y', strlen(str));
    if (position) {
        printf("%s\n", position);//your God
        printf("%d\n", (int) (position - str));//5
        printf("%c\n", str[position - str]); //y
    } else {
        printf("null\n");
    }
    int *pInt = (int *) memchr(arr, 50, sizeof(arr));
    printf("%d\n", *pInt);//50
    printf("%c\n", *pInt);//2
    printf("%c\n", (unsigned char) 50); //2
    printf("%c\n", (char) 50); //2
    printf("%c\n", 50);//2
    printf("%c\n", (unsigned char) 51); // 3

    return 0;
}

文章参考

转载注明出处

原文地址:https://www.cnblogs.com/zhangrxiang/p/8432284.html

时间: 2024-10-07 08:15:14

C 标准库 - string.h之memchr使用的相关文章

C 标准库 - &lt;string.h&gt;

C 标准库 - <string.h> 简介 string .h 头文件定义了一个变量类型.一个宏和各种操作字符数组的函数. 库变量 下面是头文件 string.h 中定义的变量类型: 序号 变量 & 描述 1 size_t 这是无符号整数类型,它是 sizeof 关键字的结果. 库宏 下面是头文件 string.h 中定义的宏: 序号 宏 & 描述 1 NULL这个宏是一个空指针常量的值. 库函数 下面是头文件 string.h 中定义的函数: 序号 函数 & 描述 1

C 标准库 - string.h之strncpy使用

strncpy 把 src 所指向的字符串复制到 dest,最多复制 n 个字符.当 src 的长度小于 n 时,dest 的剩余部分将用空字节填充. char *strncpy(char *destination, const char *source, size_t num) Parameters destination Pointer to the destination array where the content is to be copied. 指向用于存储复制内容的目标数组. s

C 标准库 - string.h之strcat使用

strcat Appends a copy of the source string to the destination string. The terminating null character in destination is overwritten by the first character of source, and a null-character is included at the end of the new string formed by the concatena

C 标准库 - string.h之strspn使用

strspn Returns the length of the initial portion of str1 which consists only of characters that are part of str2. The search does not include the terminating null-characters of either strings, but ends there. 检索字符串 dest 中第一个不在字符串 src 中出现的字符下标.返回 dest

C 标准库 - string.h之strpbrk使用

strpbrk Locate characters in string,Returns a pointer to the first occurrence in str1 of any of the characters that are part of str2, or a null pointer if there are no matches. The search does not include the terminating null-characters of either str

C 标准库 - string.h之strlen使用

strlen Returns the length of the C string str. The length of a C string is determined by the terminating null-character: A C string is as long as the number of characters between the beginning of the string and the terminating null character (without

一、Python的标准库String

一.Python的标准库String 1.查看武器 a. help(type()) name = "jane"print(help(type(name))) b. capitalize() name = "jane" print(name.capitalize()) 效果:Jane c. center() name = "jane" print(name.center(50, '-')) 效果:-----------------------jan

【C++ Primer每日刷】之三 标准库 string 类型

标准库 string 类型 string 类型支持长度可变的字符串,C++ 标准库将负责管理与存储字符相关的内存,以及提供各种有用的操作.标准库string 类型的目的就是满足对字符串的一般应用. 与其他的标准库类型一样,用户程序要使用 string 类型对象,必须包含相关头文件.如果提供了合适的 using 声明,那么编写出来的程序将会变得简短些: #include <string> using std::string; 1.1 string 对象的定义和初始化 string 标准库支持几个

标准库string类型用法(一)

标准库string类型 1. string对象的定义与初始化 string s1;                             默认构造函数,s1为空串 string s2(s1);                      将s2初始化为s1的一个副本 string s3("nwpu");            将s3初始化为一个字符串字面值副本 string s4(n, 'b');                 将s4初始化为字符‘b’的n个副本 2. string对