栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言数据结构(16)--使用数组实现字符串常用操作实例

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言数据结构(16)--使用数组实现字符串常用操作实例

字符串操作可谓是常见中的常见,usual中的usually,不好意思先秀一把英文。

使用C语言数组实现字符串的操作,还是便于兄弟们理解字符串在内存中的组织与操作的。

代码如下,精华都在注释中

#include 
#define MAX_LENGTH 100


//字符串结构体
typedef struct{
	char content[MAX_LENGTH];//内容部分,最后一位存储'',所以实际字符串内容长度是MAX_LENGTH-1
	int length;//实际长度
}String;

//打印字符串
void printStr(String *str) 
{
	printf("str:%sn",str->content);
}

//请空字符串
void clearStr(String *str) 
{
	str->content[0] = '';
	str->length = 0;
}

//返回字符串长度
int getStrLength(String *str)
{
	return str->length;
}

//判断字符串是否为空 是1 否0
int isEmpty(String *str) 
{
	if (str->length == 0) 
	{
		return 1;
	}
	else 
	{
		return 0;
	}
}

//添加字符
int appendChar(String *str,char c) 
{
	if (str->length < MAX_LENGTH - 1) 
	{
		str->content[str->length] = c;
		str->length++;
		str->content[str->length] = '';
		return 1;
	}
	else //长度不足,返回失败0
	{
		return 0;
	}
}

//插入字符,index从0开始,注意需要将后面的字符全部向后挪一个位置
int insertChar(String *str,int index,char c) 
{
	int i;
	if (str->length < MAX_LENGTH - 1)
	{
		for (i = str->length; i >= index; i--) //从最后一个''开始都向后移动一个位置
		{
			str->content[i+1] = str->content[i];
		}
		str->content[index] = c;//将插入元素放入指定位置
		return 1;
	}
	else //长度不足,返回失败0
	{
		return 0;
	}
}

//删除指定位置元素,index从0开始,直接从后面往前覆盖即可
int deleteChar(String *str,int index) 
{
	int i;
	for (i = index; i <= str->length; i++) 
	{
		str->content[i ] = str->content[i+1];
	}
	return 1;
}

//将str2连接到str1
int concat(String *str1,String *str2) 
{	
	int i = 0;
	int leftLength = MAX_LENGTH - 1 - str1->length;//剩余可用长度
	if (leftLength < str2->length) {//长度不足返回失败
		return 0;
	}
	//依次取出str2中元素追加到str1
	for (i = 0; i < str2->length; i++) 
	{
		appendChar(str1,str2->content[i]);
	}
	return 1;
}

int main() 
{
	//str1测试
	String str1;
	clearStr(&str1);
	printf("str1清空后:n");
	printStr(&str1);
	printf("str1是否为空?n");
	printf("%dn", isEmpty(&str1));
	printf("str1当前长度:n");
	printf("%dn", getStrLength(&str1));
	appendChar(&str1, 'a');
	appendChar(&str1, 'b');
	appendChar(&str1, 'c');
	printf("str1添加abc后:n");
	printStr(&str1);
	insertChar(&str1, 0, 'x');
	printf("str1插入x后:n");
	printStr(&str1);
	deleteChar(&str1,1);
	printf("str1删除a后:n");
	printStr(&str1);
	//str2测试
	String str2;
	clearStr(&str2);
	appendChar(&str2, 'e');
	appendChar(&str2, 'f');
	appendChar(&str2, 'g');
	printf("str2添加efg后:n");
	printStr(&str2);
	//str1连接str2
	concat(&str1, &str2);
	printf("str1连接str2后:n");
	printStr(&str1);
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/233175.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号