字符串的实现

#include<iostream>
#define MAXSIZE 10
using namespace std;
typedef int status;


typedef struct
{
	char *ch;
	int length;
}hstring;

// 初始化
bool init(hstring &s)
{
	s.length=l;
	if(!(s.ch=(char *)malloc(s.length *sizeof(char))))

		return false;
}



//输入字符串
void put(hstring &s)
{
	for(int i=0;i<s.length;i++)
		cin>>s.ch[i];
}

//输出字符串
void get(hstring &s)
{
	for(int i=0;i<s.length;i++)
		cout<<s.ch[i];
	cout<<endl;
}

//字符串拼接
bool concat(hstring &t,hstring s1,hstring s2)
{
	if(t.ch)
		free(t.ch);
	if(!(t.ch=(char *)malloc((s1.length+s2.length) *sizeof(char))))
		return false;
	for(int i=0;i<s1.length;i++)
		t.ch[i]=s1.ch[i];
	t.length=s1.length+s2.length;
	for(int j=0;j<s2.length;j++)
		t.ch[j+s1.length]=s2.ch[j];
	return true;
}

//固定长度截取字符串
bool substring(hstring &sub,hstring s,int pos,int len)
{
	if(pos<1||pos>s.length||len<0||len>s.length-pos+1)
		return false;
	if(sub.ch)
		free(sub.ch);
	if(!len)
	{
		sub.ch=NULL;
		sub.length=0;
	}
	else
	{
		sub.ch=(char *)malloc(len *sizeof(char));
		for(int i=0;i<len;i++)
			sub.ch[i]=s.ch[pos-1+i];
		sub.length=len;
	}
	return true;
}


//插入字符串
bool insert(hstring &s,int pos,hstring t)
{
	if(pos<1||pos>s.length+1)
		return false;
	if(t.length)
	{
		if(!(s.ch=(char *)realloc(s.ch,(s.length+t.length) *sizeof(char))))
			return 0;
		for(int i=s.length-1;i>=pos-1;--i)
			s.ch[i+t.length]=s.ch[i];
		for(int j=pos-1;j<=pos+t.length-2;j++)
			s.ch[j]=t.ch[j-pos+1];
		s.length+=t.length;
	}
	return true;
}


void main()
{
	hstring sub,t,s1,s2;
	init(s1);
	init(s2);
	init(t);
	init(sub);
	cout<<"输入字符串s1:\n";
	put(s1);
	cout<<"输入字符串s2:\n";
	put(s2);
	cout<<"字符串拼接后:";
	concat(t,s1,s2);
	get(t);
	cout<<"从s1中截取的长度为4的字串为:";
	substring(sub,s1,3,4);
	get(sub);
	cout<<"插入后:";
	insert(s1,2,s2);
	get(s1);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值