c语言中判断一个字符串是否包含另一个字符串

转载自:http://blog.csdn.net/fakine/article/details/7517417/

1. 使用库函数

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

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

2.1. 不使用库函数

第一行是要查找的字符串
第二行是被查找句子

输出要查找的字符串在被查找句子的首个位置

#include
#include
void main()
{
  int i,j,la,lb,num=0;
  char c,a[120],b[4500];
  while((c=getchar())!='\n') a[num++]=c;a[num]='\0';
      num=0;
  while((c=getchar())!='\n') b[num++]=c;b[num]='\0';
      la=strlen(a);lb=strlen(b);
  for(i=0;(lb-i)>=la;i++)
      {
           if(b[i]==a[0])
           {
                for(j=0;j
2.2. 使用指针
#include "stdio.h"
#include "conio.h"
#include "string.h"
int main(){
  char str[20]="jsdlaadf",substr[10]="sdf";
  char *p=str,*q=substr;
  int flag=0;
  for(;*(p+strlen(substr)-1);p++)
  {
      for(q=substr;*p==*q&&*q;p++,q++);
      if(!*q)
      {
          flag=1;
          break;
      }
  }
  if(flag==1) 
      puts("accord");
  else 
      puts("not accord");
  system("pause");
  }
2.3使用指针(改写为函数)
void strHandle(const char* str){
        int flag=0;
        const char* substr="文件名过长";
        const char *p=str,*q=substr;
        for(;*(p+strlen(substr)-1);p++)
        {
                for(q=substr;*p==*q&&*q;p++,q++);
                if(!*q)
                {
                        flag=1;
                        break;
                }
        }
        if(flag==1) strcpy(str,substr);
}

你可能感兴趣的:(c语言中判断一个字符串是否包含另一个字符串)