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

作者&投稿:允显 (若有异议请与网页底部的电邮联系)
C语言中怎样输出一个字符串是否包含另一个字符串的~

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

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

调用strstr()函数就可以实现#include #include int main(){char s[]="12345678";char s1[]="135";char s2[]="567";if ( strstr(s,s1) ){printf("ok
");}else{printf("no
");}//--以上显示noif ( strstr(s,s2) ){printf("ok
");}else{printf("no
");}//--以上显示okreturn 0;}

#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
", flag );
return 0;
}


由于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' 
", ebuf, pattern); 
    return 1; 
  } 
 
  while(fgets(lbuf, sizeof(lbuf), stdin)) { 
    ++lno; 
    if ((z = strlen(lbuf)) >; 0 && lbuf[z-1] == '
') 
      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')
", ebuf, lbuf); 
      return 2; 
    } 
 
    for (x = 0; x < nmatch && pm[x].rm_so != -1; ++ x) { 
      if (!x) printf("%04d: %s
", lno, lbuf); 
      printf("  $%d='%s'
", 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;
}


#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);
}

#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;
}

char flg;
char a[4] ="abc";
char b[3] ="ab";
flg = strstr (a,b)//判断b是否在a里 在的话flg=1,不在flg=0


c语言判断一个数是奇数还是偶数
在C语言中,我们可以使用模运算符(%)来判断一个数是奇数还是偶数。模运算符会返回两个数相除的余数。 模运算符(%)在C语言中利用取模运算,也就是求两个整数相除的余数。例如,10%3的结果是1,因为10除以3的余数是1。和模运算符指定输出格式。例如,%d表示输出整数,%f表示输出浮点数,%s表示输出字符串等等。 在...

在c语言中,如何判断一个值为“真”
在C语言中,逻辑值“真”用数字1表示,逻辑值“假”是用数字0表示。在c语言中,任何非0数字都能够被系统解释为“逻辑真”。逻辑运算的值也是有两种分别为真和假,C语言中用整型的1和0来表示。其求值规则如下:1、与运算 && 参与运算的两个变量都为真时,结果才为真,否则为假。例如:5>=5 &&...

在C语言中,如何判断一个数是奇数还是偶数?
int main(){ int s=0,i;for(i=1;i<20;i=i+2){ s+=i;} printf("1-20内的奇数和为%d",s);return 0;}

判断一个数是否为素数c语言
判断一个数是否为素数c语言,如下:分析:只能被1和它本身整除的整数称为素数。在数学中,要判断n是否为素数,通常让n除以2V的每一个整数,如果,能被2V几的某个整数整除,则说明,不是素数,否则n一定是素数。方法一:用for语Q判断n是否为整数 在这个代码中,我们首先定义了一个名为sprime的函数,...

C语言中,如何表示“真”还是“假”?系统如何判断一个量的“真”和“假...
C语言编译系统在表示逻辑运算结果时,以数值1代表“真”,以0代表“假”。 比如:a、b的值分别是0、4,则a||b的值为1,a&&b的值为0。但在判断一个量是否为“真”时,以0代表“假”,以非0代表“真”。比如:a=4,因为a的值为非0,被认作“真”,所以对它进行“非”运算!a=0 。其实...

判断一个数是否为正整数c语言?
在 C 语言中,我们可以使用代码来判断一个数是否为正整数。代码如下:```c include <stdio.h> int main() { int num;printf("请输入一个整数:");scanf("%d", &num);if (num > 0 && num % 1 == 0) { printf("%d 是正整数 ", num);} else { printf("%d 不是正整数 ", ...

c语言编程中如何判断一个数是否为整数
一、判断思路:1、整数中,按十进制计算,合法字符为0到9,另外在最初位置可以有符号,即+或者-。2、对于输入的值,可以先存储到字符串中,这样转换为判断字符串中是否为整数。3、先判断第一个字符是否为+或者-, 如果是,则从第二个开始判断,否则从第一个开始判断。4、对每一个需要判断的字符,...

只有身体不说谎, 你如何从一个人的肢体语言中判断出爱或不爱?或者瞬间...
回答:许多朋友可能都会想知道,自己的另一半到底爱不爱自己,虽然每次问他,他都会信誓旦旦的说爱,但是心中不免还会有些疑问。下面我就从男生的角度来分析一下,从男生哪些肢体动作中能够看出他到底爱不爱这个女生。 对视如果一个男生喜欢一个女生,那么和她对视是他很乐于做的一件事情。毕竟当你直视对方眼...

现代汉语中,怎么判断一个词是不是介词? 详解答 必采纳!!!
判断一个词的词性,应该从组合能力、充当句子成分的能力以及形态(包括构词形态和构形形态)、意义几方面入手。 首先,要尽可能多地搜集(当然也可以自己造)包含有该词的句子或短语,考察其组合能力和充当什么样的成分。 其次,要看意义,看所要判定的词在这些用例中意义是否有差别,几个意义之间是否有...

怎么区分一个词是一个语素还是两个语素
语素是语言中最小的有意义的单位,区分是一个语素还是两个语素,关键是抓住定义中“有意义”这一点,看这个词是否还能拆分成有意义的单个字。词是由语素构成,是比语素高一级的语言单位。从构成方式来看,可以分成单纯词和合成词,单纯词由一个语素组成的词,自由的单音节语素和所有的双音节、多音节语素...

绥化市19422288392: 在C语言中怎样判断一个字符串中是否包含另一个字符串 -
苦肥必兰: 如果“一个字符串”全部是英文字符的话,只要开一个char s[128];的哈希表,每个在其中出现的字符按它的ASCII值,将相应的元素置为1; 然后扫描“另一个字符串”,检测每一个字符,在数组中对应元素的值是否为1.若这个串里的对应元...

绥化市19422288392: 如何判断一个字符串中是否包含另一个字符串 -
苦肥必兰: C的函数库里有一个叫作char *strstr( const char *s1, const char *s2 )的函数,是用来判断s1指向的字符串里是否包含s2指向的字符串的,若包含,则返回s2指向的字符串的首地址,否则返回NULL.包含strstr所在的头文件string.h后,直接调用...

绥化市19422288392: c语言中如何在给定的一个字符串中判断是否有另外一个输入的字符串?有什么简单方法吗? -
苦肥必兰: char arr1[]; char arr2[]; //你的俩字符串 int main() {unsigned Arr1Len = strlen(arr1); //字符串1的长度unsigned i = 0,j = 0,count = 0;for(i;i<Arr1Len;i++) //根据1的长度决定循环次数{/*循环对比,找到就推出循环并且计数加一*/while(arr2[j++]!='\0'){if(arr1[i]==arr2[j]){count++;j=0;break;}}}printf("出现次数为%d\n",count);} 大体的思路,没编译过

绥化市19422288392: C语言定义一个函数,判断字符串中是否包含另一个子串 -
苦肥必兰: int find(char* source/*源串*/, char* target/*目标串*/)//找到返回位置,未找到返回-1 { int i,j; int s_len=strlen(source); int t_len=strlen(target); if(t_len>s_len) { return -1; } for(i=0;i<=s_len-t_len;i++) { j=0; int flag=1; if(source[i]==target[j]) { int k,p=i; for(k...

绥化市19422288392: 判断字符串是否包含另一个字符 -
苦肥必兰: indexof() :在字符串中从前向后定位字符和字符串;所有的返回值都是指在字符串的绝对位置,如为空则为- 1 string content="as#fjs#fjgkfasdsfsgfhgjgfjgdddd"; content.indexof('#') =2 //从前向后 定位 # 第一次出现的位置 content.indexof('#',1...

绥化市19422288392: C语言中编一个程序,判定一个字符串是否是另一个字符串的字串 -
苦肥必兰: 你的意思是在大的字符串里是否有小的字符串是吧! 代码:我帮你编了一个,是从大字符串中找到所有的你指定的字符串,并输出位置... #include #include void main() { char a[80],ch,c[20]; int co[10],j=0,x=0,i=0,n,count=0; printf("Input some ...

绥化市19422288392: 编写程序,检查一个字符串中是否含有另一个字符串 -
苦肥必兰: ;if(IsInclude(s,t)) printf("pt = p;while((*pt) && (*pt++ == *q++));if(*q == '\,*pt;return 0;,t,s);while(*p) {q = obj;0'n\char *t = "stdio!\n\n&quot#include <%s IS included in %s!\90"if(*p) p++;}return false; }int main() {char *s = "1234567890...

绥化市19422288392: 如何判断一个字符串是否包含另一个字符串 -
苦肥必兰: 1.判断是否包含某某字符函数是:Instr()和InstrRev();2.具体使用如下:ab="abcdefgHTTP" 你可以用Instr()或者InstrRev()来判断 if Instr(ab, "a")>0 then或 if InstrRev(ab, "a")>0 then 有 else 无3.具体代码如下:dim ly=request("LY") if Instr(ly, "HTTP") >0 then response.write("LY变量是包含了HTTP字符串!即TRUE") else response.write("LY变量中没有包含HTTP字符串!即FALSE") end if%>

绥化市19422288392: 如何判断一个字符串中包含另一个字符串 -
苦肥必兰: 1. strstr: 返回一个从被判断字符开始到结束的字符串,如果没有返回值,则不包含 代码如下:/*如手册上的举例*/ $email = 'user@example.com'; $domain = strstr($email, '@'); echo $domain; // prints @example.com ?>

绥化市19422288392: 用C语言,判断字符串1是否包含字符串2
苦肥必兰: main() {char s1[6]="thisis";char s2[5]="is"; printf("%d\n",search(s1,s2)); system("pause"); } int search(char s1[],char s2[]) {int i=0,j,len=strlen(s2); while(s1[i]){ for(j=0;j&lt;len;j++) if(s1[i+j]!=s2[j]) break; if(j&gt;=len)return i; else i++; } return -1; } 如果解决你的问题给个最佳答案呗谢谢

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网