博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自己动手写字符串库函数 一(C语言实现) 分类: C语言学习 ...
阅读量:5023 次
发布时间:2019-06-12

本文共 2283 字,大约阅读时间需要 7 分钟。

在coding中最常使用的就是对于字符串的处理问题,接下来我们自己动手写库函数,尽量使用指针操作,而不是数组操作

//头文件 string.h#include 
#include
//字符串结构体typedef struct CString{ char* str; int len;}string;//初始化void Init(string* str);void Init_With_Len(string* str, int len);void Init_With_Str(string*str, const char*strcopy);//打印字符串void Print_String(string*str);//追加字符void Append_Char(string*str, const char s);//追加字符串void Append_Str(string*str, const char*s);//计算字符串的长度int my_StrLen(const char*str);//字符串复制char* my_StrCopy(string*des, const char*sour);//字符串连接char* my_StrCat(string*des, char* sour);//字符查找char* my_Strchr(string*des, char ch);//字符串查找char* my_FindStr(string*des, char*sour);//删除指定的字符void my_DelChar(string*des, char ch);//指定的位置插入字符void my_InsertChar(string*des, char ch,int pos);//判断是否为空int IsEmpty(string*strs);

//函数的具体实现 string.c#include "String.h"//判断是否为空int IsEmpty(string*strs){	//先判断strs是否为空 再判断strs->str是否为空	if (strs == NULL || strs->str == NULL)		return 0;	else		return 1;}//获取字符串的长度int my_StrLen(const char*str){	if (str == NULL)		return -1;	int count = 0;	while (*str++ != '\0')		count++;	return count;}//初始化void Init(string* str){	str->str = NULL;	str->len = 0;}void Init_With_Len(string*str, int len){	str->str = (char*)calloc(len, sizeof(char));	str->len = len;}void Init_With_Str(string*strs, const char* strcopy){	if ( IsEmpty(strs) != 0|| strcopy == NULL)		return;	else	{		//计算字符串的长度		int count = my_StrLen(strcopy);		//注意使用calloc进行空间的分配  count+sizeof(char) 是为了最后一个放入'\0'		strs->str = (char*)calloc(count + sizeof(char), sizeof(char));		strs->len = count + sizeof(char);		//strcpy(strs->str, strcopy);		strs->str = my_StrCopy(strs, strcopy);	}}//字符串复制char* my_StrCopy(string*des, const char*sour){       if (des->str == NULL || sour == NULL)        return NULL;    char* strTmp = des->str;    int sourLen = my_StrLen(sour);    while (*sour != '\0')        *strTmp++ = *sour++;    *(des->str + sourLen) = '\0';    des->len = sourLen;    return des->str;}//打印字符串void Print_String(string* strs){	if (IsEmpty(strs) != 0)		printf("%s\n ", strs->str);	else		return;}

//主函数中测试 main.c#include "String.h"int main(){	string strs;	Init_With_Str(&strs,"tasklist");     Print_String(&strs);//result: tasklist}




版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/L-Lune/p/4671290.html

你可能感兴趣的文章
VMware虚拟机下Linux系统的全屏显示
查看>>
net core体系-web应用程序-4asp.net core2.0 项目实战(任务管理系统)-2项目搭建
查看>>
高效的jQuery
查看>>
ubuntu 16.04 (软件应用)-输入法
查看>>
windos7修复引导扇区
查看>>
Leetcode总结之Backtracking
查看>>
Android开发学习之路-图片颜色获取器开发(1)
查看>>
StackExchange.Redis 官方文档(一) Basics
查看>>
nupkg 之破解 nodejs+electron-packager 打包exe的解包
查看>>
Objective-C 使用 C++类
查看>>
浅谈之高级查询over(partition by)
查看>>
Notes: CRM Analytics–BI from a CRM perspective (2)
查看>>
graphite custom functions
查看>>
列出所有的属性键
查看>>
js获取请求地址后面带的参数
查看>>
[原创]使用java批量修改文件编码(ANSI-->UTF-8)
查看>>
设计模式のCompositePattern(组合模式)----结构模式
查看>>
二进制集合枚举子集
查看>>
磁盘管理
查看>>
SAS学习经验总结分享:篇二—input语句
查看>>