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);
  
}

原文地址:https://www.cnblogs.com/glory-yl/p/14747791.html