我是靠谱客的博主 粗犷乌龟,最近开发中收集的这篇文章主要介绍查找字符串中子字符串出现次数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

   在学linux c过程中,遇到一个问题,就是查找一个长的的字符串中子字符串出现的次数。例如查找adbcabcabc中 abc 出现的次数。 自己写的时候遇到
   了一些小问题,折腾了一下午写出来的程序都有瑕疵,在网上上找这个程序代码,没有发现一个正确的程序,都是有瑕疵的(可能大神们没时间解决这
   样一个不起眼的程序吧)。 

   终于写出这个程序,很完美的解决了一些小bug,甚至可以测试一些很变态的例子,例如在 ababababba中查找 aba 出现的次数,在aaaaaaaa中查找aa出现的次数。
   话不多说,上程序:
/*****************************************************
     File name:3.c

 Author: Tang Zhiqian

  Date:2017-07-27 15:42
*****************************************************/

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

int  func(char *str_f, char *str_z);

int main()
{
    char str_f[50];
    char str_z[10];

    scanf("%s",str_f);
    scanf("%s",str_z);

    printf("%dn", func(str_f,str_z));

    return 0;
}

int func(char *str_f, char *str_z)
{
    int n = 0;
    int same_num;    //判断父字符串中与子字符串“连续”相同的个数
    int len_f = strlen(str_f); //测长度
    int len_z = strlen(str_z);
    int i,j;

    for(i = 0; i < len_f; i++) //父字符串逐个往后推
    {
        same_num = 0;
        for(j = 0; j < len_z; j++)   //确定父字符串的字符后,子字符串从开头逐个往后推
        {
            if(str_f[i + j] == str_z[j])
            {
                same_num ++;     //相同+1
            }
            if(same_num == len_z)   //子字符串循环完后判断与父字符串相同的个数是否等于子字符串的个数
            {
                n++;
            }
        }
    }

    return n;
}

好的!
来运行一下:
1. 先测试ababa中aba出现的次数(很明显2次);
果然是2次
果然是 2 次;

2.测试aaaaa中aa出现次数(很明显4次)
这里写图片描述
果然 4 次;

3.再来个普通的
这里写图片描述

完美!简直完美啊!

最后

以上就是粗犷乌龟为你收集整理的查找字符串中子字符串出现次数的全部内容,希望文章能够帮你解决查找字符串中子字符串出现次数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部