串的基本操作

串的基本操作

1、串的基本操作包括串的初始化,打印串,求长度,串的比较,串的清空,求子串,串的合并,还有模式匹配函数。

2、程序应能得到正确结果,用户界面显示良好。

所写源代码编程风格良好,有详细注释。

 #include
<stdio.h>

#include <stdlib.h>

#include <string.h>

#define SIZE 100

char shuru(char *s,char *t)

{

       printf("Input:");

       scanf("%s",s+1);

       printf("Input:");

       scanf("%s",t+1);

       return 0;

}

char shuchu(char *s,char *t)

{    int i,j;

   
for(i=1;s[i]!='\0';i++)

       {

       printf("%c",s[i]);

       }

      printf("\n");

      for(j=1;t[j]!='\0';j++)

      {

      printf("%c",t[j]);

       }

       printf("\n");

       return 0;

}

int length(char *s,char *t)

{

       int i,j;

    *s=strlen(s+1);

       *t=strlen(t+1);

       i=s[0];

       j=t[0];

       printf("%d\n",i);

       printf("%d\n",j);

       return 0;

}

int get_next(char *t,int next[])

{

       int i=1,j=0;

       next[1]=0;

       

       while(i<t[0])

       {

              if(j==0||t[i]==t[j])

              {

                     ++i;

                     ++j;

                     next[i]=j;

              }

                else

                       j=next[j];

       }

       return *next;

}

 

char kmp(char *s,char *t)

{

       int
next[100],result;

   *next=get_next(t,next);

       int j=1,i=0;

       while(i<=s[0]&&j<=t[0])

       {

              if(j==0||s[i]==t[j])

              {

                     ++i;

                     ++j;

              }

              else

                     j=next[j];

       }

       if(j>t[0])

       {

       result=i-t[0];

       printf("%d\n",result);

       }

       else 

       printf("No
matching !\n");

       return 0;

}

char hebin(char *s,char *t)

{

    int i,sum,su1,su2;

       su1=s[0];

       su2=t[0];

       sum=su1+su2;

       for(i=1;i<=sum;i++)

       {    su1=su1+1;

              s[su1]=t[i];

       }

       for(int
h=1;h<=sum;h++)

       {

              printf("%c",s[h]);

       }

       printf("%\n");

       return 0;

}

char bijiao(char *s,char *t)

{

       int result;

       result=strcmp(s+1,t+1);

       printf("result
is %d\n",result);

       return 0;

}

void show(void)

{ 

 
printf("1...............shuru\n");

 
printf("2...............shuchu\n");

 
printf("3...............length\n");

 
printf("4................kmp\n");

  printf("5...............hebin\n");

 
printf("6...............bijiao\n");

 
printf("7...............exit\n");

  printf("input
1..6:");

}

void  main()

{ int a;

  char s[SIZE],t[SIZE]; 

  while(1)

  {  show();

    
scanf("%d",&a);

     switch(a)

     { 

          case 1:shuru(s,t);break;

       case
2:shuchu(s,t); break;

       case
3:length(s,t);break;

       case
4:kmp(s,t);break;

       case
5:hebin(s,t);break;

       case
6:bijiao(s,t);break;

       case 7:exit(1);

     }

  }

}

 

 


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值