C语言----字符串的匹配

news2024/9/20 16:48:17

字符串的匹配

实例说明:

        本实例实现对两个字符串进行匹配操作,即在第一个字符串中查找是否存在第二个字符串。如果字符串完全匹配,则提示匹配的信息,并显示第二个字符串在第一个字符串中的开始位置,否则提示不匹配。

实现过程:

        (1)在TC中创建一个C文件。

        (2)引用头文件,代码如下:

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

        (3)自定义函数match(),实现字符串匹配操作。代码如下:

int match(char *B,char *A){
    int i,j,start = 0;
    int lastB = strlen(B) - 1;
     int lastA = strlen(A) - 1;
     int endmatch = lastA;
     for (j = 0; endmatch <= lastB;endmatch++,start++)
     {
        if (B[endmatch] == A[lastA])
            for ( j = 0,i = start; j < lastA && B[i] == A[j]; )
                i++,j++;
        if (j == lastA)
        {
            return (start+1);
        }
           if (endmatch > lastB)
           {
            printf("The string is not matchable!");
            return -1;
           }
     }
}

        (4)创建 main()函数,在此函数中调用 match()函数,将得到的结果输出在窗体上。代码如下:

int main(int argc, char const *argv[])
{
    char s[] = "One world,onr dream";
    char t[] = "world";
    int p = match(s,t);
    if (p != -1)
    {
        printf("Matchable!\n");
        printf("The start position is %d", p);
    }
    printf("\n");
    getch();
    return 0;
}

        (5)完成代码如下:

#include <stdio.h>
#include <string.h>
#include <conio.h>
int match(char *B,char *A){
    int i,j,start = 0;
    int lastB = strlen(B) - 1;
     int lastA = strlen(A) - 1;
     int endmatch = lastA;
     for (j = 0; endmatch <= lastB;endmatch++,start++)
     {
        if (B[endmatch] == A[lastA])
            for ( j = 0,i = start; j < lastA && B[i] == A[j]; )
                i++,j++;
        if (j == lastA)
        {
            return (start+1);
        }
           if (endmatch > lastB)
           {
            printf("The string is not matchable!");
            return -1;
           }
     }
}
int main(int argc, char const *argv[])
{
    char s[] = "One world,onr dream";
    char t[] = "world";
    int p = match(s,t);
    if (p != -1)
    {
        printf("Matchable!\n");
        printf("The start position is %d", p);
    }
    printf("\n");
    getch();
    return 0;
}

运行结果:

       

技术要点:

        本实例创建了自定义函数 matchO进行字符串的匹配操作。matchO)函数包含两个参数参数B为要进行匹配操作的字符串,其类型为字符型指针;参数A为用来匹配的字符串使用循环语句比较A字符串最后一个字符是否与B中字符相同,如果相同,使用循环语句比较A与B是否匹配。

        希望能对您的学习和工作有所帮助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1990853.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32 - 笔记

1 STM32的串口通信 【keysking的STM32教程】 第8集 STM32的串口通信_哔哩哔哩_bilibili 波特律动 串口助手

观成科技:海莲花活跃木马KSRAT加密通信分析

概述 自2023年8月至今&#xff0c;海莲花组织多次利用KSRAT远控木马对我国发起攻击。KSRAT通过HTTP协议与C&C服务器进行通信&#xff0c;每个样本都使用了不同的URL。其心跳包采用XOR算法进行加密&#xff0c;而控制指令包和数据回传包则使用了XOR以及“XORAES-128-CBC”组…

【C语言篇】递归详细介绍(基础概念习题及汉诺塔等进阶问题)

文章目录 递归是什么递归的思想递归的限制条件 递归举例求n的阶乘分析和代码实现画图推演 顺序打印一个整数的每一位分析和代码实现画图推演 递归与迭代递归求第n个斐波那契数迭代求第n个斐波那契数 拓展练习青蛙跳台阶问题递归求解迭代求解 汉诺塔问题 递归是什么 递归是学习…

FPGA使用sv生成虚拟单音数据

FPGA使用sv生成虚拟单音数据 之前一直使用matlab生成虚拟的数据&#xff0c;导出到txt或是coe文件中&#xff0c;再导入到fpga中进行仿真测试。 复杂的数据这样操作自然是必要的&#xff0c;但是平日使用正弦数据进行测试的话&#xff0c;这样的操作不免复杂&#xff0c;今日…

CentOS 安装Redis

在 CentOS 安装 Redis 操作系统&#xff1a;centos-7.9.2009-Core 1. 更新系统 首先&#xff0c;确保你的系统是最新的&#xff1a; sudo yum update -y2. 安装 EPEL 仓库 Redis 可能不在默认的 CentOS 仓库中&#xff0c;因此你需要安装 EPEL&#xff08;Extra Packages f…

【源码+文档+调试讲解】活力健身馆管理系统

摘 要 活力健身馆管理系统的目的是让使用者可以更方便的将人、设备和场景更立体的连接在一起。能让用户以更科幻的方式使用产品&#xff0c;体验高科技时代带给人们的方便&#xff0c;同时也能让用户体会到与以往常规产品不同的体验风格。 与安卓&#xff0c;iOS相比较起来&am…

springboot狱内罪犯危险性评估系统的设计与实现论文源码调试讲解

第一章系统成功运行案例 第2章 程序开发技术 2.1 Mysql数据库 开发的程序面向用户的只是程序的功能界面&#xff0c;让用户操作程序界面的各个功能&#xff0c;那么很多人就会问&#xff0c;用户使用程序功能生成的数据信息放在哪里的&#xff1f;这个就需要涉及到数据库的知识…

CTFHUB-web-RCE-eval执行

开启题目 查看源码发现直接用蚁剑连接就可以&#xff0c;连接之后发现成功了

冒烟测试:快速初步检测软件稳定性的关键步骤

目录 前言1. 冒烟测试的定义1.1 冒烟测试的起源1.2 冒烟测试的特点 2. 冒烟测试的重要性2.1 确保构建稳定性2.2 早期发现重大问题2.3 提高测试效率 3. 冒烟测试的实施方法3.1 制定测试计划3.2 选择测试用例3.3 执行测试3.4 分析测试结果 4. 冒烟测试的最佳实践4.1 自动化冒烟测…

Opera浏览器与IPXProxy代理IP集成步骤详解

​对于经常需要使用公共WiFi网络进行网络操作的人来说&#xff0c;安全性是至关重要的。作为Opera浏览器的用户&#xff0c;我非常关注隐私安全&#xff0c;也尝试过各种提高安全性的方法&#xff0c;其中使用IPXProxy代理IP是不错的方法之一。下面为大家带来Opera浏览器与IPXP…

【java】升级jetty-client解决Too many open files问题

文章目录 升级jetty-client解决Too many open files问题问题背景排查原因解决lsof命令拓展 升级jetty-client解决Too many open files问题 问题背景 生产环境的采集经过一段时间就会报错 Too many open files&#xff0c;导致接下来的采集都会失败&#xff0c;已经严重影响到…

NSSCTF练习记录:[SWPUCTF 2021 新生赛]include

题目&#xff1a; 随便传入一个file 因为存在include_once函数&#xff0c;可以使用php伪协议获取flag.php源码&#xff0c;再通过base64解码得到flag。 php:// 访问各个输入/输出流&#xff0c;常用php://filter和php://input&#xff0c;php://filter用于读取源码&#xff…

gin框架 自定义404错误页面,自定义500等服务端异常,业务异常,根据不同异常类型显示不同的异常页面方法 整理

在gin框架中&#xff0c;要显示自定义的异常页面&#xff0c;首先需要通过gin路由对象中的LoadHTMLFiles或者LoadHTMLGlob方法加载自定义的错误页面模板文件&#xff0c; 然后定义符合 gin.HandlerFunc 类型的路由处理函数/方法 &#xff0c;即只有一个参数(c *ginx.XContext)的…

如何理解供应链控制塔?详解供应链控制塔类型与架构!

随着经济全球化的不断深入&#xff0c;企业供应链的复杂性也在不断增加。从供应商到制造商&#xff0c;再到分销商和消费者&#xff0c;全球供应链网络的每一个环节都充满了动态变化和不确定性。在这样的背景下&#xff0c;传统的供应链管理模式已难以满足现代企业的需求&#…

Ackites/Killwxapkg

自动化反编译微信小程序&#xff0c;小程序安全评估工具&#xff0c;发现小程序安全问题&#xff0c;自动解密&#xff0c;解包&#xff0c;可还..自动化反编译微信小程序&#xff0c;小程序安全评估工具&#xff0c;发现小程序安全问题&#xff0c;自动解密&#xff0c;解包&a…

【消息队列】kafka如何保证消息不丢失?

&#x1f44f;大家好&#xff01;我是和风coding&#xff0c;希望我的文章能给你带来帮助&#xff01; &#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&#x1f44d;一下博主哦 &#x1f4dd;点击 我的主页 还可以看到和风的其他内容噢&#x…

查看有无XSS漏洞验证

实验环境 操作机&#xff1a;Win10 用户名&#xff1a;wangan 密码&#xff1a;123靶机&#xff1a;Apache PHP实验地址&#xff1a;http://ip/xss/level1.php?nametest 实验原理 构造弹窗的代码提交&#xff0c;浏览器在执行该代码后就会执行弹框的操作&#xff0c;弹框的目…

Python请求API的简明教程

前言 随着微服务流行开来&#xff0c;API正在成为数据获取的主要渠道&#xff0c;我们可以通过Java的HttpClient完成数据请求&#xff0c;当然也可以通过Python工具完成数据请求。 本博将对Python如何请求API进行举例&#xff0c;保你一文掌握。 1. 准备工具 在使用Python请…

Java面试题--JVM大厂篇之针对频繁的Minor GC问题,有哪些优化对象创建与使用的技巧可以分享?

目录 引言&#xff1a; 正文&#xff1a; 1. 了解Minor GC的痛点 2. 使用对象池&#xff08;Object Pool&#xff09; 3. 避免不必要的对象创建 4. 使用StringBuilder替代字符串拼接 5. 合理设置对象的作用域 6. 使用软引用和弱引用 结束语&#xff1a; 引言&#xff…

Python | Leetcode Python题解之第330题按要求补齐数组

题目&#xff1a; 题解&#xff1a; class Solution:def minPatches(self, nums: List[int], n: int) -> int:patches, x 0, 1length, index len(nums), 0while x < n:if index < length and nums[index] < x:x nums[index]index 1else:x << 1patches …