打印
[华山论剑]

C语言标准库 memchr()函数

[复制链接]
3448|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
laocuo1142|  楼主 | 2024-6-5 15:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
memchr()函数
C语言string.h标准库中的memchr()函数,可以用于查找参数指定的字符在参数指定的字符串中的前n个字节中第一次出现的位置。具体的参数可参考下方的语法。

memchr()函数语法:
void *memchr( const void *str, int ch, size_t n )
memchr()参数
参数        描述
str        C风格字符串
ch        所要查找的字符
n        size_t类型,指定查找的前n个字节,注意是字节,而不是索引,二者有质的区别,C语言中字符串的字节,尤其是遍历字符串中有关字节的注意点可参考前面章节中的:C语言 用奇奇怪怪的代码统计字符串字符个数,还怪好用的
memchr()返回值
如果字符ch存在于字符串str的前n个字节内,则返回指向第一次出现的位置的指针,这其实是一个包含ch字符在内的字符数组,而且是str除了ch之前的字符之外的剩余的字符数组,如果没有出现,则返回NULL。

memchr()函数实例代码
因为memchr()返回的是指向ch字符的位置的指针,并不是索引,然后通过%s来格式化输出该指针指向的字符数组:

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

int main() {
    char str[] = "Hello,World!";
    // 获取字符'o'在字符串中的位置
    int *newStr = memchr(str,'o',strlen(str)-1);
    // 该指针指向的其实是包含'o'在内的(字符串)剩余的字符数组
    if(newStr!=NULL){
        printf("%s\n",newStr);
    }

    int *pos = memchr(str,'a',strlen(str)-1);
    if(pos == NULL){
        printf("没有找到字符'a'\n");
    }
    return 0;
}
代码编译运行,得到输出并输入:

o,World!
没有找到字符'a'
免责声明:内容仅供参考,不保证正确性。

使用特权

评论回复
沙发
chenjun89| | 2024-6-5 19:33 | 只看该作者
C语言的标准库函数其实有很多功能。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1213

主题

5348

帖子

12

粉丝