在coding中最常使用的就是对于字符串的处理问题,接下来我们自己动手写库函数,尽量使用指针操作,而不是数组操作
//头文件 string.h #include <stdio.h> #include <stdlib.h> //字符串结构体 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++ != ' ') 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) 是为了最后一个放入' ' 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 != ' ') *strTmp++ = *sour++; *(des->str + sourLen) = ' '; des->len = sourLen; return des->str; } //打印字符串 void Print_String(string* strs) { if (IsEmpty(strs) != 0) printf("%s ", strs->str); else return; }
//主函数中测试 main.c #include "String.h" int main() { string strs; Init_With_Str(&strs,"tasklist"); Print_String(&strs);//result: tasklist }
版权声明:本文为博主原创文章,未经博主允许不得转载。