串的介绍,字符串的表示与实现

串型结构是由字符组成的,以''为结束标志。字符串操作包括创建、销毁、清空、复制、连接、比较和长度查询。在C++中封装字符串可以简化使用,而子串查询算法寻找一个字符串在另一个字符串中首次出现的位置。
摘要由CSDN通过智能技术生成

一、串的介绍

​ 串型结构就是由若干个类型相同的元素组成的数据结构,末尾有一个结束标志,字符串就是由字符元素组成的串型结构,'\0’是它的结束标志,使用它可以存储单词、文章、汉字等文字信息。

​ 随着计算机和编程语言的发展,字符串在程序中使用的越来越多,字符串就简称串,对它的操作都是对串里面所有字符整体操作,以’\0’为结束标志,如果字符串的末尾没有’\0’,可能会产生乱码、段错误、脏数据等问题。

字符串结构应该具备的功能、算法有:

​ 创建:定义字符串

​ 销毁:释放字符串

​ 清空:删除所有的字符

​ 复制:就是strcpy函数

​ 连接:就是strcat函数

​ 比较:就是strcmp函数

​ 长度:就是strlen函数

​ 查询字串:就是strstr函数

字符串的表示与实现

​ 字符串一般有两实现方式,这两种方式都是使用顺序表,只是内存不同而已:

​ 1、用栈内存存储字符,定长方式,字符的数量一旦超出表的范围,为了防止内存越界要对字符串进行截取,了解一下即可。

​ 2、使用堆内存破碎字符,在操作字符串时,自动扩展堆内存。

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>

typedef struct String
{
   
	char* ch;
	size_t size;
}String;

// 创建字符串
String* create_string(void)
{
   
	String* str = malloc(sizeof(String));
	str->ch = NULL;
	str->size = 0;
	return str;
}

// 计算长度
size_t len_string(String* str)
{
   
	return strlen(str->ch);
}

// 复制
void copy_string(String* str,const char* ch)
{
   
	size_t size = strlen(ch)+1;
	if(size > str->size)
	{
   
		str->ch = realloc(str->ch,size);
		str->size = size;
	}
	
	strcpy(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值