zoukankan      html  css  js  c++  java
  • C语言实现的串

    c语言实现的串:

    创建串

    查看串

    连接串

    比较串

    求子串

    串长

    销毁串

    主函数

    结果示例

    #include<stdio.h>
    #include<stdlib.h>
    #define MaxSize 258
    //定义串
    typedef char DataType;
    typedef struct String
    {
      DataType data[MaxSize];
      int length;
    } String;
    //初始化
    void InitString(String *s)
    {
      s->length=0;
    }
    

    //创建
    void creatString(String *s)
    {
    	DataType c;
    	 printf("请输入字符进行创建:
    ");
    	while (c!='
    '&&c!='
    ')
    	{
    	 scanf("%c",&c);
    	 s->data[s->length]=c;
    	 s->length++;
    	}
    	s->length--; 
    }
    

    //串的查看
    void getString(String *s)
    {
    	int i;
    	DataType c;
       for (i=0;i<s->length;i++)
       {
       	
       	if (s->data[i]=='')
       	 {
       		printf("有\0
    ");
    	 }
    	   
    	   c=s->data[i];
    	   printf("%c",c);
       }
       printf("
    ");
    }
    

    //串的拼接
    String combinString(String *s1,String *s2)
    {
    	int i,j;
      String *s3,s;
      s3=&s;
      InitString(s3);
      i=0;
      while(s1->data[i]!='
    '&&s1->data[i]!='')
      {
        	
    	s3->data[s3->length]=s1->data[i];
        s3->length++;
        i++;
      }
      j=0;
     while(s2->data[j]!='
    ')
     {
       s3->data[s3->length]=s2->data[j];
       s3->length++;
       j++;
      }
     return s;
    }
    

    //串比较
    void StrCompare(String *s1,String *s2)
    {
    	int i;
    	if (s1->length!=s2->length)
    	{
    		printf("两个串不相同
    ");
    	}
    	else
    	{
    		  for(i=0;i<s1->length;i++)
    	   {
    		   if (s1->data[i]!=s2->data[i])
    		  {
    			    printf("两个串不相同
    ");
    		    return;
    		  }
        	}
        	printf("两个串相同
    ");
    	}
    	return;
    } 
    

    //求子串
     String subString(String *s,int start,int len)
    {
     	if (start>s->length+1||start+len>s->length+1)
     	{
     		printf("不存在该子串!
    ");
    	 }
    	String s1,*r;
    	r=&s1;
    	InitString(&s1);
    	int i,j=0;
    	for (i=start-1;i<len;i++)
    	{
    		r->data[j]=s->data[i];
    		r->length++;
    		j++;
    	}
    	return s1;
    } 
    

    //串的长度
    int lenString(String *s)
    {
    	printf("length:%d
    ",s->length);
    	return s->length;
     } 
    

    //串的销毁
     void Destroy(String *s)
     {
     	s->length=0;
     	free(s->data);
     	printf("串销毁成功!
    ");
     }
    

    void main()
    {
        String sa,sb,sc,sd;
    //创建串sa,sb 
       InitString(&sa);
       creatString(&sa);
       lenString(&sa);
       getString(&sa);
      
       InitString(&sb);
       creatString(&sb);
       lenString(&sb);
       getString(&sb);
    //比较串sa与sb 
      StrCompare(&sa,&sb);
    //连接串sa,sb 成sc并销毁sc 
      sc=combinString(&sa,&sb);
      printf("sa与sb连接的串如下:
    "); 
      getString(&sc);
      lenString(&sc);
      Destroy(&sc);
    //求sa从1-2的子串 
      sd=subString(&sa,1,2);
      getString(&sa);
      printf("从1-2的子串如下:
    ");
      getString(&sd);
      
    }
    

  • 相关阅读:
    Android项目几种常见的应用架构
    PreferenceCategory背景颜色设置
    xml中怎样换行?
    Windows 7启动Telnet
    android图片处理方法(转)
    android SDK下载失败和更新方法
    JBoss 5.1.0 GA:Error installing to Instantiated:name=AttachmentStore state=Described
    window常用的『运行』命令
    在linux中eclipse连接android手机开发程序
    [leetcode]Binary Tree Level Order Traversal
  • 原文地址:https://www.cnblogs.com/glory-yl/p/14747791.html
Copyright © 2011-2022 走看看