C语言对字符串中的一个序列进行计数

标签 c string sequence

我正在尝试编写一个函数来获取两个字符串,一个称为 str1 的短字符串和一个称为 str2 的较长字符串。

该函数将计算在 str2 中找到 str1 的次数。

example: str1= 'ab' str2 = 'abab' print 2

但出于某种原因,对于上面的例子。我得到 3。这是我的代码:

    int how_many_times(char* str1,char* str2)
{
    int result=0,i,j=0;
    for(i=0;i<strlen(str2);i++)
    {
        if((str1[i]==str2[j]))
        {
            while(str1[i]==str2[j])
            {
                j++;
                if(j==strlen(str1))
                {
                    result++;
                    j=0;
                }
                i++;
            }
        }
        else
            i++;
    }
    printf("%d",result);
    getch();
    return result;
}

最佳答案

int count(char *s1, char *s2)
{
    char *p;
    int c;

    c = 0;
    for (p = strstr(s2, s1); p; p = strstr(p, s1)) {
        c++;
        p++;
    }
    return c;
}

关于C语言对字符串中的一个序列进行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17073147/

相关文章:

c++ - C 或 C++ 或 SystemC 中的 CPU 缓存实现

c - float 在 c 中打印出负 0

java - 将字符串解析为不带语言环境的日期

java - 具有 3 个条件的字符串格式 : is it possible?

SQL 序列在 case 语句中使用时跳过值

c - C 中的 Fget 和 EOF

c - 如何在c中连接多个二维数组

Java 正则表达式 - 字母数字,允许前导空格但不允许空白字符串

r - 如何获得约 1000 个蛋白质的成对 "sequence similarity score"?

java - 创建给定格式的三角形序列...为什么我的三角形不会显示