快捷搜索: 王者荣耀 脱发

c和c++如何判断一个字符串包含另一个字符串

1、不使用库函数

暴力算法 第一行输入要查找的字符串,第二行输入被查找的字符串 返回要查找字符串在另一个字符串中出现的首位置

#include<stdio.h>
#include<string.h>
int main()
{
          
   
	int i,j,la,lb;
	int num = 0;
	char a[100],b[200],c;
	while ((c = getchar()) != 
)
	{
          
   
		a[num++] = c;
		
	}
	a[num] = ;//末尾以结束
	num = 0;
	while ((c = getchar()) != 
)
	{
          
   
		b[num++] = c;
		
	}
	b[num] = ;//末尾以结束
	la = strlen(a);
	lb = strlen(b);
	for (i = 0; i<=lb-la; i++)
	{
          
   
		if (b[i] == a[0])
		{
          
   
			for (j = 0; j < la; j++)
			{
          
   
				if (b[i + j] != a[j])//不相等就退出,连续不能中断,否则重头开始判断
					break;
				
			}
			if (j == la)
			{
          
   
				printf("%d
", i + 1);//输出在字符串中的位置
				break;
			}
		}
	}
	return 0;
}

运行结果:

2.使用c语言中的库函数

string.h strstr函数 函数名: strstr 功 能: 在串中查找指定字符串的第一次出现 用 法: char *strstr(char *str1, char *str2); 说明:返回指向第一次出现str2位置的指针,如果没找到则返回NULL。

调用函数,判断返回值是否等于NULL,决定是否输出 如; char *p=".c"; //需要的子串 if(strstr(A,p)) printf("%s",A);

3.使用c++中的find()函数

if(str.find(“chi1 huo3 guo1”) != string :: npos) 表示str字符串包含"chi1 huo3 guo1" if(str.find(“chi1 huo3 guo1”) == string :: npos) 表示str字符串不包含"chi1 huo3 guo1" npos 是一个常数,用来表示不存在的位置 查找字符串a是否包含子串b,不是用strA.find(strB) > 0 而是 strA.find(strB) != string::npos

经验分享 程序员 微信小程序 职场和发展