id backaddchar(mystring *string, char ch)
{
if (mystrlen(string->p) + 1 == string->reallength)//意味着满了
{
//重新分配内存
string->p = realloc(string->p, string->reallength + 1);
string->reallength += 1;
string->p[string->reallength - 2] = ch;
string->p[string->reallength - 1] = '\0';
}
else
{
int nowlength = mystrlen(string->p);//求出当前长度
string->p[nowlength] = ch;
string->p[nowlength + 1] = '\0';//字符的增加
}
}
void backaddstring(mystring *string, char*str)
{
int nowmystringlength = mystrlen(string->p);//获取当前长度
int addstringlength = mystrlen(str);//要增加的长度
if (nowmystringlength + addstringlength + 1 > string->reallength)//判定是否越界
{
int needaddlength = nowmystringlength + addstringlength + 1 - (string->reallength);
//printf("%d",needaddlength);
string->p = (char *)realloc(string->p, string->reallength + needaddlength);//增加字符串长度
mystrcat(string->p, str);//拷贝字符串
string->reallength += needaddlength;//增加长度
}
else
{
mystrcat(string->p, str);//拷贝字符串
}
}
void printfstring(mystring *string)
{
printf("\nstring=%s", string->p);//打印字符串
}
void run(mystring *string)
{
system(string->p);//执行指令
}
char * findfirstchar(mystring *string, char ch)
{
char *p = mystrchr(string->p, ch);//查找
return p;
}
char * findfirststring(mystring *string, char *str)
{
char *pres = mystrstr(string->p, str);
return pres;//返回地址
}
int deletefirstchar(mystring *string, const char ch)
{
char *p = mystrchr(string->p, ch);//查找
if (p == NULL)
{
return 0;
}
else
{
char *pnext = p + 1;
while (*pnext != '\0')
{
*p = *pnext; //删除一个字符整体向前移动
p++;
pnext++;
}
*p = '\0';//字符串要有结尾
return 1;
}
}
int deletefirststring(mystring *string, char * const str)
{
char *pres = mystrstr(string->p, str);//查找
if (pres == NULL)
{
return 0;
}
else
{
int length = mystrlen(str);//求字符串长度
char *pnext = pres + length;//下一个字符
while (*pnext != '\0')
{
*pres = *pnext; //删除一个字符整体向前移动
pres++;
pnext++;
}
*pres = '\0';//字符串要有结尾
return 1;
}
}
void addchar(mystring *string, char ch, char *pos)
{
if (pos == NULL || string == NULL)
{
return;
}
if (mystrlen(string->p) + 1 == string->reallength)//意味着满了
{
//重新分配内存
string->p = realloc(string->p, string->reallength + 1);
string->reallength += 1;
int nowlength = mystrlen(string->p);//求出当前长度
int movelength = mystrlen(pos);//求出现在要移动的长度
for (int i = nowlength; i > nowlength - movelength; i--)//移动
{
string->p[i] = string->p[i - 1];//轮询
}
string->p[nowlength - movelength] = ch;//插入
string->p[nowlength + 1] = '\0';//结尾
}
else
{
int nowlength = mystrlen(string->p);//求出当前长度
int movelength = mystrlen(pos);//求出现在要移动的长度
for (int i = nowlength; i > nowlength - movelength; i--)//移动
{
string->p[i] = string->p[i - 1];//轮询
}
string->p[nowlength - movelength] = ch;//插入
string->p[nowlength + 1] = '\0';//结尾
}
}
void addstring(mystring *string, char*str, char *pos)//任意增加字符串
{
if (pos == NULL || string == NULL)
{
return;
}
int nowmystringlength = mystrlen(string->p);//获取当前长度
int addstringlength = mystrlen(str);//要增加的长度
if (nowmystringlength + addstringlength + 1 > string->reallength)//判定是否越界
{
int needaddlength = nowmystringlength + addstringlength + 1 - (string->reallength);
//printf("%d",needaddlength);
string->p = (char *)realloc(string->p, string->reallength + needaddlength);//增加字符串长度
string->reallength += needaddlength;//增加长度
//先移动,再拷贝
int nowlength = mystrlen(string->p);//求出当前