You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否存在支持传入搜索边界的strchr类C语言字符串查找函数?

解决方案

C标准库<string.h>中已经提供了完全匹配你需求的函数:memchr。

函数原型

void *memchr(const void *ptr, int ch, size_t count)

参数说明

  • ptr:搜索的起始内存地址,直接传入你持有的char* pos即可
  • ch:需要查找的目标ASCII字符,和strchr的入参规则一致,传入的int值最终会被转换为unsigned char做比较
  • count:搜索的最大字节数,直接传入你持有的子串长度即可

核心特性

该函数只会在你指定的count字节范围内搜索目标字符,不会因为中途遇到\0终止搜索,也不会超出长度范围向后查找,完美适配你不需要处理子串后半部分的需求。

使用示例

#include <string.h>

char* pos = /* 你的子串起始指针 */;
size_t sub_len = /* 你的子串长度 */;
// 在sub_len长度范围内查找字符'a'
char* result = memchr(pos, 'a', sub_len);

if (result != NULL) {
    // 找到目标字符,result指向范围内第一个匹配的地址
} else {
    // 指定范围内没有找到目标字符
}

补充说明

如果你需要从子串末尾向前倒序查找目标字符,可以使用POSIX标准扩展的memrchr函数,参数规则和memchr完全一致,但注意该函数不属于C标准,跨Windows等非POSIX平台使用时需要自行实现。


内容的提问来源于stack exchange,提问作者a_girl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 12:57:04