文章目录

  • C语言两种方法判别指定字符串是否被另一字符串包含
    • 一、方案一
      • 1、代码
      • 2、结果
    • 二、方案二
      • 1、代码
      • 2、结果
    • 三、方案三
      • 1、代码
      • 2、结果
    • 四、参考链接

C语言两种方法判别指定字符串是否被另一字符串包含

一、方案一

1、代码

/* 程序目的:判断指定字符串是否包含在另一个字符串中*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int is_in(char *wenben, char *search_word);
int find(char *buf, char *sub);
int main()
{// 调用函数一if (is_in("机房机房就感觉贾继康", "贾继康") == 1) // 调用函数:参数二:比较文本,参数一:原文本{printf("\n包含");}else{printf("\n不包含");}
}// 创建函数(方法一):是否包含字符串函数
int is_in(char *wenben, char *search_word)
{int i = 0, j = 0, flag = -1;while (i < strlen(wenben) && j < strlen(search_word)){if (wenben[i] == search_word[j]){ //如果字符相同则两个字符都增加i++;j++;}else{i = i - j + 1; //主串字符回到比较最开始比较的后一个字符j = 0;         //字串字符重新开始}if (j == strlen(search_word)){             //如果匹配成功flag = 1; //字串出现break;}}return flag;
}

2、结果

二、方案二

1、代码

/* 程序目的:判断指定字符串是否包含在另一个字符串中*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int is_in(char *wenben, char *search_word);
int find(char *buf, char *sub);
int main()
{// 调用函数二char buf[] = "贾继康几点服";if (find(buf, "贾继康") == 1)printf("\n是子串");elseprintf("\n不是子串");system("pause");
}// 创建函数(方法二):是否包含字符串函数
int find(char *buf, char *sub) // 参数一:主文本,参数二:待查词
{int len = strlen(buf);                 // 主文本长度char *p = (char *)malloc(len * 2 + 1); // 动态内存分配memset(p, 0x00, len * 2 + 1); // 0x00:0---》 p:指针或者数组,0x00:赋给p的值 p的长度strcpy(p, buf);               // 将buf复制到P中strcat(p, buf);               //把buf所指字符串添加到p结尾处(覆盖p结尾处的'\0')并添加'\0'。返回指向p的指针。if (strstr(p, sub) == NULL){ //在字符串p中查找第一次出现字符串sub的位置,不包含终止符 '\0'。return 0;}else{return 1;}
}

2、结果

三、方案三

1、代码

/* 程序功能:1: 判断原字符串是否包含指定字符串2: 返回第一次包含出现的位置*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>int find(char *source, char *target);
int main()
{// 调用函数二char buf[] = "贾继康测试贾继康"; //  char buf2[] = "贾继康测试贾继康";char buf3[] = "继康"; //  char *p = buf;char *p2 = buf3;// printf("数组所占空间大小:%d\n", sizeof(buf2));// printf("%c",*(p+3));if (find(buf, buf3) == 1){printf("有");}else{printf("无");}
}// 创建函数
// source为源字符串,target为子字符串,如找到则返回在源串中的位置,
//如未找到则返回-1,如果要改为找到返回1,把return i改为return 1;
int find(char *source, char *target)
{int i, j;//原字符和目标字符位置int s_len = strlen(source); // 原字符串长度int t_len = strlen(target); //  目标字符串长度int weizhi = 0;/* if (t_len > s_len) // 目标字符串长度< 原字符串长度{return -1;} */for (i = 0; i <= s_len; i++){j = 0;int flag = 1;// 从i=0,j=0 开始if (source[i] == target[j]) // 待查字符与原字符中的字符相等时{   int k, p = i;               // 这里将p=i:获取目标字符当前的位置weizhi++;//位置for (k = 0; k < t_len; k++) // 以目标字符串作为遍历次数。进一步遍历原字符{if (source[p] == target[j]) // 继续相同{p++;// 相同位置上:继续前移j++;continue;}else{flag = 0;break;}//printf("第一次当前%d");}} // 当source[i] == target[j]对应位置的字符不相等else{continue; // 下一个}//printf("位置%d\n",weizhi);if (flag == 1){printf("此时原字符串指针i的位置 %d\n", i);printf("此时比较字符串指针j的位置 %d\n",j);printf("比较字符串在原字符串中第一次出现的位置 %d\n\n", i-strlen(target)+2);// i-strlen(c)+2return 1;  }}return -1;
}

2、结果

四、参考链接

1、https://blog.csdn.net/kkwant/article/details/81133814
2、https://blog.csdn.net/meiqi0538/article/details/83819727

【C】C语言三种方法判别指定字符串是否被另一字符串包含相关推荐

  1. python计算今年第几天_Python三种方法计算指定日期是今年的第几天

    今天早上和腾讯面试官进行了视频面试,由于音量和网络以及我的垃圾电脑的原因,个人感觉黄了... 最后面试官给了我一道简单的计算题:指定日期是今年的第几年 由于电脑卡到打字都打不动,我勉勉强强写了一点,虽 ...

  2. c语言三种方法求n的k次方

    // 方法一:递归 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> int Pow ...

  3. 用python计算今天是今年的第几天_Python计算指定日期是今年的第几天(三种方法)...

    今天早上和腾讯面试官进行了视频面试,由于音量和网络以及我的垃圾电脑的原因,个人感觉黄了... 最后面试官给了我一道简单的计算题:指定日期是今年的第几年 由于电脑卡到打字都打不动,我勉勉强强写了一点,虽 ...

  4. java字符串abc反转_JAVA字符串反转的三种方法

    方法一:使用StringBuilder import java.util.Scanner; public class StrReversal { public static void main(Str ...

  5. 易语言删除数组里的指定成员的三种方法

    我们想从从数组里删除指定成员的时候,首先要遍历数组, 找到对应的成员名称,然后使用删除成员命令来删除.以下提供了三种思路. 方法一: 窗口程序集名 保 留 保 留 备 注 窗口程序集1 子程序名 返回 ...

  6. C语言函数怎么像python那样返回多个值?(三种方法:1、设置全局变量 2、传递指针 3、使用结构体返回不同类型的数据)

    引用文章:c语言函数可不可以返回多个值 文章目录 方法一:设置全局变量 例如:利用一个函数求出正方形的周长和面积. 方法二:使用数组名或指针作为函数的形参 实例2:编写函数求一维整形数组的最大值与最小 ...

  7. c语言数组最大可定义多少位_C语言求数组的最大值三种方法

    /* 黄哥Python培训 黄哥所写*/#include int maxValue(int* arr, int n);int maxRecursionValue(int* arr, int n);in ...

  8. Java | Java语言在Eclipse控制台输入的三种方法

    写在前面的内容,java控制台输入浅尝辄止即可 >>> 文章目录 三种方法比较一览图 方法一:in/out public static final InputStream in//静 ...

  9. [mysql]三种方法为root账户指定密码

    前言:前段时间把mysql安装后一直没管它,当时就在奇怪为什么mysql登陆不要密码,原来一直用的超用户账户登陆的(简称超级用户) 其实只怪自己太无知,之前一直用的phpbydamin进行的数据库的可 ...

最新文章

  1. 通过script标签实现跨域
  2. C++面试笔记(2)
  3. 为什么使用Maven
  4. shell编程之条件判断语句和流程控制语句
  5. 如何使用Gradle外部脚本进行项目构建
  6. 你知道C#中的Lambda表达式的演化过程吗
  7. 排序算法与常见数据结构
  8. 数学公式【(1+1+2+1+2+3+1+2+3+4。。。)⇒n*(n+1)*(n+2)/6】
  9. espcms简约版的表单,提示页,搜索列表页
  10. win10易升_易升win10失败怎么办
  11. Springboot毕设项目房屋租赁系统4yvi2(java+VUE+Mybatis+Maven+Mysql)
  12. 继“世界性别平等大会”圆满召开后,喀拉拉邦首席部长为“性别平等园区”揭幕
  13. [ZZ] Adventures with Gamma-Correct Rendering
  14. Jlink 使用 RTT 输出调试信息总结
  15. netty 高匿ip检测_高匿代理ip不用担心被网站检测
  16. networking /etc/network/interfaces 笔记221102
  17. CISCO数据中心虚拟化之VSS技术和配置
  18. 用MySQL创建数据库和数据库表(linux终端操作)
  19. 绝对值不等式(贪心)
  20. mysql 怎么修复表_修复mysql表

热门文章

  1. 《天天数学》连载53:二月二十二日
  2. 语音识别的基本原理是什么,语音识别流程分为哪几步?
  3. 作为一模型师,难道选择游戏建模不比选择影视动漫“香”吗?
  4. ABBYY FineReader for Mac快速安装、注册方法
  5. 2008年8月18号,星期一,晴。天行健,君子以自强不息。 ——《周易•乾•象》
  6. python字符串转换字节_python 字节与字符串转换
  7. javax.net.ssl.SSLPeerUnverifiedException: Hostname 10.1.82.151 not verified:
  8. OLEDB访问本地Excel
  9. linux服务器清理内存,释放Linux服务器内存
  10. Xilinx之FPGA器件系列简介