串的基本操作

//赋值操作
  int strassign(Str & str,char * ch)
  {
	  if(str.ch)
		  free(str.ch);
	  int len = 0;
	  char * c = ch;
	  while(* c)
	  {
		  ++len;
		  ++c;
	  }
	  if(len == 0)
	  {
		  str.ch = null;
		  str.length = 0;
		  return 1;
	  }
	  else
	  {
		  str.ch = (char *)malloc(sizeof(char) * (len + 1));
		  if(str.ch == null)
			  return 0;
		  else
		  {
			  c = ch;
			  int i;
			  for(i = 0;i <= len;++c)
				  str.ch[i] = * c;
			  str.length = len;
			  return 1;
		  }
	  }
  }

  //取串长度操作
  int strlength(Str str)
  {
	  return str.length;
  }

  //串比较操作
  int strcompare(Str s1,Str s2)
  {
      int i;
	  for(i = 0;i < s1.length && i < s2.length;++i)
	  {
		  if(s1.ch[i] != s2.ch[i])
			  return s1.ch[i] - s2.ch[i];
	  }
       return s1.length - s2.length;	  
  }

  //串的连接操作
  int concat(Str & str,Str str1,Str str2)
  {
	  if(str.ch)
	  {
		  free(str.ch);
		  str.ch = null;
	  }
	  str.ch = (char *)malloc(sizeof(char) * (str1.length + str2.length + 1));
	  if(str.ch) = null
		  return 0;
	  int i = 0;
	  while(i < str1.length)
	  {
		  str.ch[i] = str1.ch[i];
		  ++i;
	  }
	  int j = 0;
	  while(j < str2.length + 1)
	  {
		  str.ch[i + j] = str2.ch[j];
		  ++j;
	  }
	  str.length = str1.length + str2.length;
	  return 1;
  }
  //求子串操作
  int substring(Str & substr,Str str,int pos,int len)
  {
	  if(pos > str.length || pos < 0 || len > str.length - pos || len < 0)
		  return 0;
	  if(substr.ch)
	  {
		  free(substr.ch);
		  substr.ch = null;
	  }
	  if(len == 0)
	  {
		  substr.ch = null;
		  substr.length = 0;
		  return 1;
	  }
	  else
	  {
		  substr.ch = (char *)malloc(sizeof(char) * (len + 1));
		  int i = pos;
		  int j = 0;
		  while(i < pos + len)
		  {
			  substr.ch[j] = str.ch[i];
			  ++i;
			  ++j;
		  }
		  substr.ch[j] = '\0';
		  substr.length = len;
		  return 1;
	  }
  }

  //串清空操作
  int clearstring(Str & str)
  {
	  if(str.ch)
	  {
		  free(str.ch);
		  str.ch = null;
	  }
	  str.length = 0;
	  return 1;
  }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值