C语言数据结构(16)--使用数组实现字符串常用操作实例
2020-02-06 10:52
573 查看
字符串操作可谓是常见中的常见,usual中的usually,不好意思先秀一把英文。
使用C语言数组实现字符串的操作,还是便于兄弟们理解字符串在内存中的组织与操作的。
代码如下,精华都在注释中
#include <stdio.h> #define MAX_LENGTH 100 /* * 主题:使用数组实现字符串操作实例 * 作者:熊猫大大 * 时间:2020-01-15 */ //字符串结构体 typedef struct{ char content[MAX_LENGTH];//内容部分,最后一位存储'\0',所以实际字符串内容长度是MAX_LENGTH-1 int length;//实际长度 }String; //打印字符串 void printStr(String *str) { printf("str:%s\n",str->content); } //请空字符串 void clearStr(String *str) { str->content[0] = '\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] = '\0'; 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--) //从最后一个'\0'开始都向后移动一个位置 { 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("%d\n", isEmpty(&str1)); printf("str1当前长度:\n"); printf("%d\n", 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); }
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 【C语言】编写一个函数reverse_string(char * string)(递归实现),将参数字符串中的字符反向排列,不能使用C函数库中的字符串操作函数。
- 使用C语言实现vector动态数组的实例分享
- 【C语言】编写一个函数reverse_string(char * string) 实现:将参数字符串中的字符反向排列。要求:不能使用C函数库中的字符串操作函数。
- C语言实现字符串操作函数的实例
- EKAlgorithms-常用数据结构Objective-C语言实现一数组排序
- C语言中常用的字符串操作(子串分割、替换、去前后空格、递归实现字符串反转)
- 【c语言】编写一个函数reverse_string(char * string) 实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中的字符串操作函数
- OC学习笔记16--OC中文件操作-NSFileManager的使用及文件操作中常用的一些字符串方法
- C语言 编写一个函数reverse_string(char * string) 实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中的字符串操作函数。
- c# 使用linq查询子句方式实现 字符串数组统计操作
- C语言字符串操作函数及常用的实现
- 通过代理类实现java连接数据库(使用dao层操作数据)实例分享
- 用C#编程语言实现数据结构传递整型变量、字符串和数组的方法
- 常用函数-------字符串、数组操作函数
- C语言数组实现栈的基本操作,并利用O(1)求出栈中最小元素
- C语言中常用的字符串操作函数
- 约瑟夫环问题的PHP实现 使用PHP数组内部指针操作函数
- C语言中字符串的数组的定义实现
- 字符串操作常用函数——C语言
- 基于php常用函数总结(数组,字符串,时间,文件操作)