需求: 使用C语言封装string 字符串,实现字符串的增、删、改、查等API函数。
要求: 不能使用 string 库函数,所有库函数必须自己手动实现。
【项目实现】
myString.h 代码如下:
1 #include <stdlib.h> 2 #include <string.h> 3 #include <stdio.h> 4 5 //字符串封装,需要库函数 6 //不需要库函数 7 struct CString 8 { 9 char *p; //保存字符串首地址 10 int realLen; //字符串实际长度 11 }; 12 13 typedef struct CString myString; //相当于myString就是struct CString的简写 14 15 //字符串封装需要实现:初始化、打印、增[尾部增加/任意位置增加](字符/字符串)、删(字符/字符串)、查(字符/字符串)、改(字符/字符串) 16 17 void init(myString *string); //原封不动初始化 18 void initWithLen(myString *string, int len); //开辟长度,内存清零 19 void initWithString(myString *string, char *copyString); //初始化并拷贝字符串 20 void printString(myString *string); //打印字符串 21 22 void run(myString *string); //将字符串string按照指令来执行 23 24 //增[尾部增加](字符/字符串): 25 void backAddChar(myString *string,char ch); //尾部增加字符 26 void backAddStr(myString *string,char *str); //尾部增加字符串 27 28 //查(字符/字符串): 29 char *findFirstChar(myString *string, char ch); //在字符串string中查找第一个出现的字符ch,返回第一个找到的字符 30 char *findFirstStr(myString *string, char *str); //在字符串string中查找第一个子串str,返回第一个找到的子串的地址 31 32 //删(字符/字符串) 33 int delFirstChar(myString *string, const char ch); //成功返回0,失败返回-1;依赖于查找函数;删除第一个找到的字符 34 int delFirstStr(myString *string, char * const str); //删除第一个找到的字符串 35 36 //增[任意位置增加](字符/字符串): 37 void addChar(myString *string, char ch, char *pos); //任意位置增加字符 38 void addStr(myString *string, char *str, char *pos); //任意位置增加字符串 39 40 //改(字符/字符串) 41 void changeFirstChar(myString *string, const char oldChar, const char newChar); //修改字符 42 void changeFirstStr(myString *string, char * const oldStr, char * const newStr); //修改字符串
myString.c 代码如下:
1 #define _CRT_SECURE_NO_WARNINGS 2 #include <stdlib.h> 3 #include <string.h> 4 #include <stdio.h> 5 #include "myString.h" 6 7 //实现库函数strlen(): 8 int mystrlen(const char *p) 9 { 10 if (p == NULL) 11 return -1; //失败 12 int len = 0; 13 while (*p != '