易截截图软件、单文件、免安装、纯绿色、仅160KB

用C实现串匹配的几种方法,kmp和BM

本来不想自己写的,但网上的大都是c++实现的,有些自称是C实现的 复制到编译器上根本运行不了。
KMP还是很经典的算法,我就不加注释了,直接返回第几个数匹配..
#include <stdio.h>
#include <stdlib.h>
void getNext(char t[]);
int next[80];
int main()
{
    char s[80],t[80];
    int result=0;
    printf("输入字符串:");
    gets(s);
    printf("输入字符串:");
    gets(t);
    getNext(t);
    int i=0,j=0;
    while(i<strlen(s)&&j<strlen(t))
    {
        if(s[i]==t[j]) {i++;j++;}
        else
        {
             j=next[j];
             if(j==-1) {i++;j++;}
        }
    }
    if(j>=strlen(t)) result=i-j+1;
    else result=0;
    printf("%d\n",result);
}
getNext(char t[])
{
    next[0]=-1;
    int j=0,k=-1;
    while(j<strlen(t))
    {
        if(k==-1||t[j]==t[k])
        {
            j++;
            k++;
            next[j]=k;
        }
        else k=next[k];
        }
    }
}
BM算法,网上实现的不多,有几个版本的都是很复杂,指针来指针去,其实没那么烦
#include <stdio.h>
#include <stdlib.h>
int BM(char s[],char t[],int n,int m);
int dist(char s,char t[]);
int main()
{
    char s[80],t[80];
        printf("输入字符串:");
    gets(s);
    printf("输入字符串:");
    gets(t);


相关文档:

C/C++单元测试理论精要(二)

1.2 单元测试的目标和方法
    单元测试的目标是什么呢?就是完整检测代码单元的功能逻辑。找出代码单元本身的所有功能逻辑错误,具体来说,就是检测对数据的各种分类是否考虑全面,处理是否正确。单元测试并不是用来代替系统测试、性能测试的,它的目标相当明确,就是检测代码单元本身的功能逻辑错误。
& ......

搭建eclipse下的c和c++开发环境


 
我们需要一个cdt,这个可以在Eclipse官网下载。
我们需要MinGW——C/C++编译平台,下载后需要安装,同时选中g++、MinGW Make,同时设置环境变量,将%MinGW_HOME%\bin设置到PATH中,然后我们可以通过命令行敲击gcc,看是否有效果。
我们需要gdb——C/C++调试平台,下载后安装,默认到MinGW_ ......

Fedora Linux 下安装配置C开发环境Code::Blocks


一、提前的话
  要说C语言和Linux的关系大家应该都不会陌生,Linux系统内核就是用C语言开发的,所以所有的Linux系统下面 都会有C的编译调试工具,不过这些工具都是命令式的,正式开发的话会很不方便。Fedora在安装的时候可以选择安装Fedora Eclipse,这个IDE很强大,C,C++,Java,Python等等都支持,而且编译,调试和 ......

Fedora Linux 下安装配置C开发环境Code::Blocks


一、提前的话
  要说C语言和Linux的关系大家应该都不会陌生,Linux系统内核就是用C语言开发的,所以所有的Linux系统下面 都会有C的编译调试工具,不过这些工具都是命令式的,正式开发的话会很不方便。Fedora在安装的时候可以选择安装Fedora Eclipse,这个IDE很强大,C,C++,Java,Python等等都支持,而且编译,调试和 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号