首页 > 解决方案 > 如何改进 strspn 的实现

问题描述

size_t my_strspn(const char *string, const char *chars)
{
    size_t n;
    const char *p;
    for (n = 0; *string; string++, n++)
    {
        for (p = chars; *p && *p != *string; p++);
        if (!*p)
            break;
    }

    return n;
}

有没有一种简单的方法可以消除“中断”?我试图修改 for 循环,但它们需要多做一次额外的迭代。

标签: cfunctionstring.h

解决方案


我对这个论坛太新了,无法添加评论,而且我太忙(即懒惰)来测试这个,所以......

在第一个 for 循环中添加 *p 检查怎么样?:

for (n = 0; *string && *p; string++, n++)

推荐阅读