在下面的代码我想找到字符串中的子串和子串的出现指数的出现次数。
所以我做了一个while循环,如果发现一个相同的字符使i和j递增,那么如果我输入的子字符串的长度%计数就递增了。所以当我运行它时程序不会终止。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 256
int main()
{
    char line[MAX];
    char word[MAX];
    int l , w ;
    int i=0, j=0 ,count=0 ;
    fgets(line , MAX,stdin);
    fgets(word,MAX,stdin);
    l = strlen(line);
    w = strlen(word);
    while(i < l){
        if((line[i]==word[j])){
            i++ ;
            j++ ;
        }
        if( (i+1) % (w-1) == 0){
            printf("Occurrence at index %d",(i-w+2));

            count++ ;
        }
    }
    printf("Total number of occurrences = %d",count);
    return 0;
}

最佳答案

while循环的条件是i < l。您无需在循环中修改l。递增i的唯一位置是

    if((line[i]==word[j])){
        i++ ;
        j++ ;
    }


如果您曾经遇到line[i] != word[j]的迭代,则while循环将永远不会停止,因为在该if之外,您永远不会修改ijl

PS:我在这里被C ++标签吸引。现在发现代码是C,我无法真正告诉您修复它的最佳方法,但是我几乎可以肯定,在C语言中,您也不必发明一个轮子就可以找到字符串中的子字符串。 。

关于c - 我在代码中遇到问题,该代码应查找字符串中子字符串的出现次数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59198215/

10-11 22:36
查看更多