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;
}
文章参考
- http://www.cplusplus.com/reference/cstring/memchr/
- http://zh.cppreference.com/w/c/string/byte/memchr
- http://www.runoob.com/cprogramming/c-function-memchr.html
转载注明出处
C 标准库 - string.h之memchr使用的更多相关文章
- C 标准库 - string.h
C 标准库 - string.h This header file defines several functions to manipulate C strings and arrays. stri ...
- C标准库<string.h>实现
本文地址:http://www.cnblogs.com/archimedes/p/c-library-string.html,转载请注明源地址. 1.背景知识 <string.h>中声明的 ...
- C标准库string.h中几个常用函数的使用详解
strlen 计算字符串长度 size_t strlen(const char *str) 计算字符串 str 的长度,直到空结束字符,但不包括空结束字符. 函数实现: int Strlen(cons ...
- C 标准库 - string.h之memmove使用
memmove Move block of memory Copies the values of num bytes from the location pointed by source to t ...
- C 标准库 - string.h之memcpy使用
memcpy Copy block of memory Copies the values of num bytes from the location pointed to by source di ...
- C 标准库 - string.h之memcmp使用
memcmp Compare two blocks of memory. Compares the first num bytes of the block of memory pointed by ...
- C 标准库 - string.h之strlen使用
strlen Returns the length of the C string str. The length of a C string is determined by the termina ...
- C 标准库 - string.h之strpbrk使用
strpbrk Locate characters in string,Returns a pointer to the first occurrence in str1 of any of the ...
- C 标准库 - string.h之strrchr使用
strrchr Locate last occurrence of character in string, Returns a pointer to the last occurrence of c ...
随机推荐
- Spring事务管理—aop:pointcut expression 常见切入点表达式及事物说明
例: <aop:config> <aop:pointcut expression="execution(* com.xy.service.*.*(..))" ...
- Win RT Webview获取cookie
方法1: HttpBaseProtocolFilter filter = new HttpBaseProtocolFilter(); var cookis = filter.CookieManager ...
- mvc4开篇之BundleConfig(1)
新建一个mvc4默认项目,会看到以下目录 打开App_start 里面BundleConfig.cs文件 你会看到这么一段话: 有关 Bundling 的详细信息,请访问 http://go.micr ...
- Centos部署Abp zero常见问题及处理
多租户切换,多语言切换异常 解决: 修改nginx配置,在nginx.conf中 增加 #多租户问题 ignore_invalid_headers off; 修改应用程序Logo异常处理 异常: Sy ...
- 腾讯云/阿里云/微软云安装ISO镜像系统方法
如今云服务的盛行,我们的开发和应用中场景应用也层出不穷,有时我们需要安装自由的镜像却越来越难,甚至有些云出于安全原因自己用户安装自由镜像,那么今天将带给大家安装自有镜像的方法. 前提条件:你的现有服务 ...
- “全栈2019”Java第七十一章:外部类访问静态内部类成员详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- ARX添加新的图形对象到当前数据库空间ObjectARX PostCurrentSpace
static Acad::ErrorStatus PostCurrentSpace(AcDbObjectId &objId,AcDbEntity *pEnt) { Acad::ErrorSta ...
- 恢复 MSSQL bak 文件扩展名数据(上)
恢复 MSSQL bak 文件扩展名数据 一.概念: Microsoft SQL Server是由美国微软公司所推出的关系数据库解决方案,最新的版本是SQL Server 2016,已经在2016年6 ...
- KEY
typedef struct st_key { uint key_length; /* Tot length of key */ ulong flags; /* dupp key and pack f ...
- 基于windows fiber的协程(coroutine)实现
一个非常简单,但是实用的协程实现,使用Windows的*Fiber函数族(linux可以稍微改一下用*context函数族). fco.h #ifndef _MSC_VER #error " ...