C中统计子串个数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C中统计子串个数相关的知识,希望对你有一定的参考价值。

编 写 程 序,统 计 给 定 的 字 符 串 array 中 包 含 的 指 定 子 串sub 的 个 数。例 如 统 计“abceifgheiflaideifsh”中 子 串“eif”的个 数 为 3。

要求两个串均由键盘录入。
要求两个串均用字符型数组存放:char array[20], sub[10];

新手,实在想不出什么好算法,自己想了一个将主串分组的办法,执行老出错……

#include <stdio.h>
#include <string.h>
long GetTimes(char *pMain, char *pSub)

long times = 0;
long mainLen = strlen(pMain);
long subLen = strlen(pSub);

for(long i = 0; i <= mainLen - subLen; i ++)

int flag = 1;
for(long j = 0; j < subLen; j ++)

if(pMain[i + j] != pSub[j])

flag = 0;
break;


if(flag)
times ++;


return times;

int main()

//char str[20]="abcabc";
char* str="abceifgheiflaideifsh";//你给的字符串用20个大的数组放不下
char subStr[10]="eif";
printf("出现次数为%d\n",GetTimes(str,subStr));
return 0;
参考技术A 从第一个逐一比较,完全匹配后,+1,继续匹配。
比如 abceifgheiflaideifsh
a!=e,下一个,b!=e...
到了e=e,看下一个i=i,f=f,于是匹配了,+1
又从g开始。。

当然,这种效率并不算最好,但一般的数据完全能够应付。
如果数据比较苛刻。可以参见kmp算法
参考技术B #include <stdio.h>
#include <string.h>

int compara(char arr[],char sub1[]);
void main()

char array1[20],sub[10];
printf("请输入array:\n");
gets(array1);
printf("请输入sub:\n");
gets(sub);

int sum=0;
sum=compara(array1,sub);
printf("子串个数为%d\n",sum);


int compara(char arr[],char sub1[])

int sum=0;
int k=1;
int lenarr;
lenarr=strlen(arr);
int lensub1;
lensub1=strlen(sub1);
if(lenarr<lensub1)
return 0;

for(int i=0;i<lenarr;i++)

k=1;
if(arr[i]==sub1[0])

for(int j=0;j<lensub1;j++)

if(k==0) break;
if(arr[i+j]!=sub1[j])

k=0;



if(k==1) sum++;



return sum;
/*明天再给你加注释哈*/

shell中统计某个文件中字段的个数

比如t.txt下是这样的字段:
11#ss
22#dd
11#ff
请问,怎么统计第1列的数据的个数,比如11、22在文件中的个数?

cut -d'#' -f1 1.txt |sort | uniq -c


cut -d'#' -f1 1.txt  ##这句话的作用是输出第一个字段

cut -d'#' -f1 1.txt  | sort ## 把输出的字段做一个排序

cut -d'#' -f1 1.txt  | sort |uniq -c ##计算重复个数,也就是你要的统计结果


这是我这边的执行结果:

参考技术A cat t.txt | grep "11" | wc -l

打印t.xt | grep 过滤出11 | 统计11 出现的次数

grep "22" t.txt | wc -l追问

这种方法我也知道,如果你不知道你要统计是11呢?
我想要实现的功能类似与sql中的select xxx,count(*) from xxx group by xxx

追答

我不会数据库,对sql语句不了解。

追问

没关系,也非常感谢您能回答。呵呵……

以上是关于C中统计子串个数的主要内容,如果未能解决你的问题,请参考以下文章

C语言:从给出的数据中统计出既是回文数又是素数的数

C语言问题 【函数与过程】回文素数

Python中统计一个文档中单词的个数

shell中统计某个文件中字段的个数

JavaScript中统计数组中相同元素的个数-案例

python中统计基因组所含N碱基总个数