C 练习实例96
题目:计算字符串中子串出现的次数 。
程序分析:无。
实例
// Created by www.runoob.com on 15/11/9.
// Copyright © 2015年 菜鸟教程. All rights reserved.
//
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int i,j,k,TLen,PLen,count=0;
char T[50],P[10];
printf("请输入两个字符串,以回车隔开,母串在前,子串在后:\n");
gets(T);
gets(P);
TLen=strlen(T);
PLen=strlen(P);
for(i=0;i<=TLen-PLen;i++)
{
for(j=0,k=i;j<PLen&&P[j]==T[k];j++,k++)
;
if(j==PLen)count++;
}
printf("%d\n",count);
system("pause");
return 0;
}
以上实例运行输出结果为:
请输入两个字符串,以回车隔开,母串在前,子串在后: abca a 2
C 语言经典100例
杜若隰子
250***7597@qq.com
参考地址
参考方法:
#include<stdio.h> #include<string.h> int fun(char *a,char *b) { int count = 0; char *p; int len_b = strlen(b); while((p = strstr(a,b)) != NULL) { count++; a = p + len_b; } return count; } int main() { printf("%d\n",fun("dh123dhgfdgsshdhscnbdh","dh")); return 0; }杜若隰子
250***7597@qq.com
参考地址
HIT_CCC
117***2963@qq.com
参考方法:
#include<stdio.h> #include<string.h> int Sub_Num(char *str,char *sub) { int count = 0,i,j; for(i = 0; i < strlen(str); i++) { int pos = 0; for(j = 0;j < strlen(sub); j++,pos++) { if(str[i + pos] != sub[j]) break; } if(j == strlen(sub)) count++; } return count; } int main(void) { char str[80],sub[80]; int count; printf("请输入两个字符串,以回车隔开,母串在前,子串在后:\n"); gets(str); gets(sub); count = Sub_Num(str,sub); printf("%d",count); return 0; }HIT_CCC
117***2963@qq.com
kisushotto
kis***otto@163.com
参考方法:
#include <stdio.h> #include <string.h> int strCount(char strM[], char strS[]); int main() { char strM[100], strS[100]; printf("请输入两个字符串,以回车隔开,母串在前,子串在后:\n"); scanf("%s\n%s", strM, strS); printf("%d", strCount(strM, strS)); } int strCount(char strM[], char strS[]) { int count = 0, m; for (int i = 0; i < strlen(strM); ++i)//strlen返回无符号整型数 { m = i; char *Mp = &strM[m], *Sp = strS;//子串从开头开始,母串从当前位置开始 while (*Sp != '\0') { if (strM[m++] != *Sp++) break; if (*Sp == '\0') ++count; } } return count; }kisushotto
kis***otto@163.com
Jinlaips
Jin***ps@qq.com
参考:
#include <stdio.h> #include <string.h> int string_in(char *s1, char *s2); int main(void) { char t[50], p[10]; printf("请输入两个字符串,以回车隔开,母串在前,子串在后:\n"); gets(t); gets(p); printf("共出现%d次\n", string_in(t, p)); return 0; } int string_in(char *s1, char *s2) { int i = 0, ct = 0; while (*(s1 + i) != '\0' && *s2 != '\0') { if (!strncmp(s1 + i, s2, strlen(s2))) ct++; i++; } return ct; }Jinlaips
Jin***ps@qq.com