C语言中怎么判断一个字符串包含在另一个字符串里面

如:定义字符数组a[30]="iamtired"定义另一个字符数组b[100],输入字符串,判断a数组是否在b里面;是的话flag=1;否的话flag=0;我要完整的代码... 如:
定义字符数组a[30]="iamtired"
定义另一个字符数组b[100],输入字符串,判断a数组是否在b里面;是的话flag=1;否的话flag=0;
我要完整的代码
展开
 我来答
kaixingui2012
推荐于2017-09-29 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6200万
展开全部
#include<stdio.h>
#include<string.h>
int main()
{
int flag;
char a[30]="iamtired";
char b[100];

scanf("%s",b);

if( strstr( b , a ) )
flag=1;
else
flag=0;

printf("flag=%d\n", flag );
return 0;
}
DoubleDimos
推荐于2017-10-09 · TA获得超过858个赞
知道小有建树答主
回答量:1053
采纳率:75%
帮助的人:594万
展开全部

由于c语言自身不知吃match函数,也不支持正则表达式,因此只能够自己书写函数。但是这并不是绝对的,由于c语言很多的函数库,因此有个函数库可以找到你想要的内容。regex.h

,下载该函数库,并放在指定位置(视你的安装目录以及软件所定,详情百度),然后使用<include regex.h>。

该库里面有一个函数:

int regexec(const  regex_t  *preg,  const  char *string, size_t nmatch,regmatch_t pmatch[], int eflags); 
typedef struct { 
  regoff_t rm_so; 
  regoff_t rm_eo; 
} regmatch_t;

按照定义定义regmatch_t参数,然后传入就行。使用完之后,应该用void regfree(regex_t *preg);取消使用。

例子如下:

#include <stdio.h>; 
#include <sys/types.h>; 
#include <regex.h>; 


static char* substr(const char*str, unsigned start, unsigned end) 

  unsigned n = end - start; 
  static char stbuf[256]; 
  strncpy(stbuf, str + start, n); 
  stbuf[n] = 0; 
  return stbuf; 


int main(int argc, char** argv) 

  char * pattern; 
  int x, z, lno = 0, cflags = 0; 
  char ebuf[128], lbuf[256]; 
  regex_t reg; 
  regmatch_t pm[10]; 
  const size_t nmatch = 10; 
  
  pattern = argv[1]; 
  z = regcomp(&reg, pattern, cflags); 
  if (z != 0){ 
    regerror(z, &reg, ebuf, sizeof(ebuf)); 
    fprintf(stderr, "%s: pattern '%s' \n", ebuf, pattern); 
    return 1; 
  } 
 
  while(fgets(lbuf, sizeof(lbuf), stdin)) { 
    ++lno; 
    if ((z = strlen(lbuf)) >; 0 && lbuf[z-1] == '\n') 
      lbuf[z - 1] = 0; 
   
    z = regexec(&reg, lbuf, nmatch, pm, 0); 
    if (z == REG_NOMATCH) continue; 
    else if (z != 0) { 
      regerror(z, &reg, ebuf, sizeof(ebuf)); 
      fprintf(stderr, "%s: regcom('%s')\n", ebuf, lbuf); 
      return 2; 
    } 
 
    for (x = 0; x < nmatch && pm[x].rm_so != -1; ++ x) { 
      if (!x) printf("%04d: %s\n", lno, lbuf); 
      printf("  $%d='%s'\n", x, substr(lbuf, pm[x].rm_so, pm[x].rm_eo)); 
    } 
  } 

  regfree(&reg); 
  return 0; 
}

 如果不使用正则表达式,可以使用函数strstr,代码如下:

#include <stdio.h>
#include <string.h>

int main()
{
    char str1[] = "Hello World!";
    char str2[] = "Hello";
    if ( !strstr(str1,str2) )
        printf("existed!");
    else printf("Not find!");
    return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lzuxiaolong
推荐于2018-11-24 · TA获得超过224个赞
知道小有建树答主
回答量:86
采纳率:0%
帮助的人:86.7万
展开全部
#include <stdio.h>
#include<string.h>
int flag=0;
void main()
{ int f(char str1[],char str2[]);
char str1[20],str2[20],*s1,*s2;

printf("input string1:\n");
gets(str1);
s1=str1;
printf("input string2:\n");
gets(str2); /*str2为要验证的字串*/
s2=str2;
f(s1,s2);
if (flag==1)
printf("\nYES!\n\n");
else if (flag==0)
printf("\nNO!\n\n");
}

int f(char*s1,char*s2)
{char *p,*q;

for(;*s1!='\0';s1++)
{if (*s2==*s1) /*判断字符串中是否有和要判断的字串首字符相同的字符*/
{ flag=1;
p=s1 ; /*s1 p 为第一个相同字符的地址*/
q=s2;
for(;*q!='\0';) /*如果有则判断接下去的几个字符是否相同*/
{ if (*q++!=*p++)
{ flag=0;break;
}
}
}
if (flag==1)break;

}

return(flag);
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
再少伊
2014-12-16 · 超过12用户采纳过TA的回答
知道答主
回答量:34
采纳率:40%
帮助的人:12.7万
展开全部
#include<stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char a[30] = "iamtired";
char b[100];
int flag = 0;
printf("Please input a string:\n");
gets(b);
int i = 0;
int j = 0;
for (i = 0; i < strlen(b);i++)
{
if (b[i] != a[0])
{
continue;
}
for (j = 0; j < strlen(a);j++)
{
if (a[j] != b[i+j])
{
break;
}
}
if (strlen(a) == j)
{
flag = 1;
break;
}
}
printf("flag = %d", flag);
system("pause");
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Sorrow_Lrc
2018-03-16
知道答主
回答量:10
采纳率:0%
帮助的人:3.2万
展开全部
char flg;
char a[4] ="abc";
char b[3] ="ab";
flg = strstr (a,b)//判断b是否在a里 在的话flg=1,不在flg=0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式