c - 如何多次使用 strchr() 查找第 n 次出现

标签 c string

我正在尝试找出一种方法来完成这项工作:

//Returns a pointer to the nth char in a string
const char *nth_strchr(const char *s, int c, int n) {
    int c_count = 0;
    char *nth_ptr;

    while (c_count++ != n) {
        nth_ptr = strchr(s, c);
        //need a line here to skip past the previous found occurrence.
    }
    return nth_ptr;
}

我不太确定如何做到这一点,以便 while 循环的每次迭代都可以确认上一个循环中找到的字符的出现/位置。由于我有指向第一次出现的指针...我正在考虑使用内存地址来递增下一个循环,以便我可以为下一个 strchr() 调用提供从 开始的字符串>c + 1 位置? 这可能吗?

最佳答案

const char* nth_strchr(const char* s, int c, int n)
{
    int c_count;
    char* nth_ptr;

    for (c_count=1,nth_ptr=strchr(s,c); 
         nth_ptr != NULL && c_count < n && c!=0; 
         c_count++) 
    {
         nth_ptr = strchr(nth_ptr+1, c);
    }

    return nth_ptr;
}

此代码已经过测试。

关于c - 如何多次使用 strchr() 查找第 n 次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46070363/

相关文章:

javascript - 如何检查字符串中是否存在数组元素

javascript - 匹配两个字符串之间的字符串

java - 如何从 JDatePicker 中提取和重置日期?

c - 为什么我的实例变量表现得如此奇怪?我做对了吗?

c - 我的增量不起作用 (c)

c - 自增int和静态int的意义: C

python - 如何在循环中将字符串相互添加?

c - 如何将从函数获得的结果传输到 C 中的 char 数组?

c - 什么时候用Cygwin或MinGW编译C代码?

python - 在python中将文件下载为字符串