串的基本操作-1(求串长、判空串、串赋值、串比较)详解

本文介绍了如何在C语言中使用自定义顺序串结构(str),包括定义结构体、计算串长、判断空串、赋值以及比较两个字符串的方法,强调了结构体成员访问的点.和箭头->的区别。
摘要由CSDN通过智能技术生成

定义顺序串存储结构:

typedef struct{
	char s[MAXSIZE];
	int len;
}str;

上面的数组便是用来存储串的数据,且定义字符总长不能超过MAXSIZE,可以根据实际情况调整。下面的len显然易见就是串的长度了,

求串长

int Strlen(str S){
	return S.len;
} 

判空串

int StrEmpty(str S){
    if(S.len==0)
		return 1;
	else
		return 0;
}

串赋值

void strAssign(str S,char t[]){
    int i=0;
    while(S.s[i]){
        t[i]=S.s[i];
        i++;
    }
}

串的比较函数

int StrCompare(str s,str t){
	int i;
	for(int i=0;i<s.len && i<t.len;i++){
		if(s.s[i]!=t.s[i]){
			return s.s[i]-t.s[i];
		}
	}
	return (s.len-t.len);
} 

首先就是通过函数传入两个字符串,然后开始判断。字符串的判断是从第一个字符开始判断,而不是先看长度的。

举例:

①假设以字符串s为abcd,字符串t为abdf为例传入,那么进入程序以后,前两个字符相同(也就是i从0到1的时候),到i=2的时候,便是判断c和d,c小于d,那么此刻满足if条件,所以返回的是可能是正数也可能是负数(此题返回的应该是负数,则表明的是字符串s<t);

②假设以字符串s和t都为abcd,那么在for循环语句里就没有满足if语句的时候,最后退出循环的时候,即返回两个字符串长度的值(此处为0);

③假设字符串s为abc,字符串t为abcd,那么在for语句里也不会满足if语句的时候,最后退出循环(当i的长度小于其中一个结构体的长度时便不满足for里面的循环条件就退出循环了),所以此处可能返回正数也可能返回负数(此题此处返回负数,表明的是字符串s<t)。

 点(.)是用于结构体变量访问成员,箭头(->)是用于结构体指针访问成员。

文章参考:

C语言中访问结构体成员时 点 . 和 箭头 -> 的区别:http://t.csdnimg.cn/OPWjC

《数据结构——用C语言描述(第三版)》--耿国华;

  • 12
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值