C语言的简单使用(九、字符串查找经典模型)

这个博客的作用是介绍从一大串字符中找出特定的字符串出现了多少次,有两种模型,一个是do-while模型,一个是while模型。
主要使用了<string.h>中的一个函数
**char *strstr(const char haystack,const char needle);
它的作用是从第一个字符串(haystack)中找出第二个字符串(needle)出现的位置,将位置的指针返回。

do-while 模型

下面的程序是从"13abcd8464dfa64abcd45464abcddfdasafabcd464"中统计"abcd"出现的次数

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
	char *p = "13abcd8464dfa64abcd45464abcddfdasafabcd464";
	int n = 0;
	do {
		p = strstr(p,"abcd");
		if (p != NULL)
		{
			n++;//累计个数
			//重新设置查找的起点
			p = p + strlen("abcd");
		}
		else//若没有匹配的字符串,跳出循环
		{
			break;
		}
	} while (*p != NULL);//如果没到结尾就继续

	printf("n = %d\n",n);
	system("pause");
	return 0;
}

C语言的简单使用(九、字符串查找经典模型)

while模型

下面的程序与上面的功能意义,不同的是它的写法

int main(void)
{
	char *p = "13abcd8464dfa64abcd45464abcddfdasafabcd464";
	int n = 0;
	while((p = strstr(p,"abcd")) != NULL)
	{//能进来肯定有匹配的子串
		//重新设置起点位置
		p = p + strlen("abcd");
		n++;

		if (*p == 0)//如果到结束符,跳出
		{
			break;
		}
	}
	//输出结果
	printf("n = %d\n", n);
	system("pause");
	return 0;
}

C语言的简单使用(九、字符串查找经典模型)

上一篇:C语言 char *、char []、const char *、string的区别与相互转换


下一篇:[Swift]LeetCode1081. 不同字符的最小子序列 | Smallest Subsequence of Distinct Characters