目录
一、可以用三种方式解决子串问题:函数strstr、指针、子串出现的首个位置。
一、可以用三种方式解决子串问题:函数strstr、指针、子串出现的首个位置。
先举几个例子来说明一下什么样的字符串可以称作子串(区分大小写,假设字符串数组长度为20):
令str1[20]="dou LUO da lu";
1.str2[20]="da l";是子串;
2.str2[20]="dal";不是子串;
3.str2[20]="LUO";是子串;
4.str2[20]="Luo";不是子串;
5.str2[20]="dou da";不是子串。
二、使用函数strstr判断str1中是否包含str2
1.strstr函数在库函数"string.h"中,它的使用方法是strstr(str1,str2),函数得到的是地址,并不是数据内容,所以要用指针变量来接收;
2.如果判断str2是子串,就会返回str1中首次出现str2加上其后的内容,否则返回null;
举个例子:str1[20]="dou LUO da lu"; str2[20]="da l";那么strstr(str1,str2)返回的内容是"da lu";
3.运行代码和结果(codeblocks和手机程序C Compiler可运行)
#include<stdio.h>
#include<string.h>
void main()
{
char str1[20],str2[20];
char *str;//设置指针变量来存储子串在母串中的地址
printf("请输入被查找字符串str1:");
scanf("%s",str1);
printf("要查找的字符串str2:");
scanf("%s",str2);
str=strstr(str1,str2);
if(str)//判断str是否为空,不能写成str!=null
{
printf("str2是子串:%s\n",str);
}
else
{
printf("str2不是子串:%s\n",str);
}
}
注意代码中进行比较的两个字符串是运行程序后手动输入的,用的scanf函数获取,所以字符串得是连续的,若有空格则会自动将前两个字符串分别赋值给str1和str2,至于第二个空格及以后有多少内容都不管,看结果就知道了: