串的一些操作,不包括kmp

来源:互联网 发布:java 语句 顺序 编辑:程序博客网 时间:2024/06/08 20:23

串的连接:
这里有串的创建,清空,输出,长度,(长度这里由于创建时s.length随着字符的输入不断改变(增加),所以长度函数就直接写s.length,如果前面没有一边输入,长度一边改变的代码,那在长度函数里需要自己进行编写,求出长度,也是由于之前长度有增加,所以后面for循环里的长度,直接i

#include<cstdio>#include<iostream>#include<algorithm>#include<stdlib.h>#include<cstring>#define MaxSize 54using namespace std;struct String{    char *ch;    int length;};void createstr(String &s){    s.ch=(char*)malloc(sizeof(char)*54);    s.length=0;    for(int i=0; i<MaxSize; i++)    {        s.ch[i]=getchar();        s.length++;        if(s.ch[i]=='\n')        {            break;        }    }}void print(String &s){    if(s.length==0)    {        printf("NULL\n");    }    else    {        for(int i=0; i<s.length; i++)        {            if(s.ch[i]!='\n')            {                 printf("%c ",s.ch[i]);            }        }        printf("\n");    }}int strlength(String &s){    int l=s.length;    return l-1;     //减去一个\n的长度;}void connect(String &s,String &t,String &h){    h.ch=(char *)malloc(sizeof(char)*(s.length+t.length));    h.length=s.length+t.length;    for(int i=0; i<s.length; i++)    {        h.ch[i]=s.ch[i];    }    for(int i=0; i<h.length; i++)    {        h.ch[i+s.length-1]=t.ch[i];    }}void clear(String &s){    if(s.ch)    {        free(s.ch);        s.ch=NULL;    }    s.length=0;}int main(){    String s,t,h;    createstr(s);    createstr(t);    printf("s=%d\n",strlength(s));    printf("t=%d\n",strlength(t));    print(s);    print(t);    connect(s,t,h);    print(h);    clear(s);    clear(t);}
原创粉丝点击