设为首页 加入收藏

TOP

c语言中字符串操作的工具类(二)
2015-01-22 20:57:56 来源: 作者: 【 】 浏览:46
Tags:言中 字符串 操作 工具
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);//求出当前

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇objective-c 复制对象 下一篇C专家编程之为什么C语言把数组形..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: