设为首页 加入收藏

TOP

c语言中字符串操作的工具类(一)
2015-01-22 20:57:56 来源: 作者: 【 】 浏览:42
Tags:言中 字符串 操作 工具
??

1.编写头文件

#define _CRT_SECURE_NO_WARNINGS

//#pragmawarning(disable:4996)

#include

#include

#include

struct CString

{

char *p; //保存字符串首地址

int reallength; //实际长度

};

typedef struct CString mystring;//简写

//原封不动初始化

void init(mystring *string);

//开辟长度,内存清零

void initwithlength(mystring *string, int length);

//初始化并拷贝字符串

void initwithstring(mystring *string, char *copystring);

//打印

void printfstring(mystring *string);

//增加字符

void backaddchar(mystring *string, char ch);

//增加字符串

void backaddstring(mystring *string, char*str);

//执行指令

void run(mystring *string);

//返回第一个找到的字符的地址

char * findfirstchar(mystring *string, char ch);

//返回第一个找到的字符串的地址

char * findfirststring(mystring *string, char *str);

//删除第一个找到的字符

int deletefirstchar(mystring *string, const char ch);

//删除第一个找到的字符串

int deletefirststring(mystring *string, char * const str);

//任意增加字符

void addchar(mystring *string, char ch, char *pos);

//任意增加字符串

void addstring(mystring *string, char*str, char *pos);

//改变字符

void changefirstchar(mystring *string, const char oldchar, const char newchar);

//改变字符串

void changefirststring(mystring *string, char * const oldstring, char *const newstring);

2.编写函数实现

#include "mystring.h"

#include "stdio.h"

#include "stdlib.h"

/* 求字符串的长度 */

int mystrlen(char *p)

{

if (p == NULL)

{

return -1;//失败,

}

int length = 0;

while (*p != '\0')//字符串终止条件

{

length++;//长度自增

p++;//指针不断向前

}

return length;

}

/*字符串拷贝 */

char *mystrcpy(char *dest, const char *source)//const限定不被意外修改

{

if (dest == NULL || source == NULL)

{

return NULL;//为空没有必要干活了

}

char * destbak = dest;

while (*source != '\0')//一直拷贝

{

*dest = *source;//赋值字符

source++;

dest++;//指针不断向前,字符挨个赋值

}

*dest = '\0';//结尾

return destbak;//返回地址

}

/*字符串拼接*/

char *mystrcat(char *dest, const char *source)

{

if (dest == NULL || source == NULL)

{

return NULL;//失败

}

else

{

char *destbak = dest;//保留地址

while (*dest != '\0')

{

dest++;//指针向前移动

}

//从尾部开始拷贝

while (*source != '\0') //循环被被拷贝的字符串

{

*dest = *source;//字符串赋值

dest++;

source++;

}

*dest = '\0';//结尾

return destbak;

}

}

char * mystrchr(const char *dest, const char ch)

{

if (dest == NULL)

{

return NULL;

}

while (*dest != '\0')

{

if (*dest == ch)

{

return dest;//找到返回地址

}

dest++;

}

return NULL;//返回

}

char *mystrstr(const char * const dest, const char * const findstr)

{

if (dest == NULL || findstr == NULL)

{

return NULL;

}

char *destbak = dest;

char *p = NULL;//保存找到的地址

while (*destbak != '\0')

{

int flag = 1;//假定是相等

char *findstrbak = findstr;

char *nowdestbak = destbak;

while (*findstrbak != '\0')

{

if (*nowdestbak != '\0')

{

if (*findstrbak != *nowdestbak)//有一个不等

{

flag = 0;//赋值为0代表不等

}

nowdestbak++;

findstrbak++;

}

else

{

flag = 0;//设置标识

break;

}

}

if (flag == 1)

{

p = destbak;//当前位置

return p;

}

destbak++;

}

return NULL;

}

void init(mystring *string)

{

string->p = NULL;

string->reallength = 0;//初始化结构体字符串

}

void initwithlength(mystring *string, int length)

{

//string->p =(char *) malloc(sizeof(char)*length);//分配内存

string->p = (char *)calloc(length, sizeof(char));//分配内存并清零

string->reallength = length;//长度

}

void initwithstring(mystring *string, char *copystring)

{

int length = strlen(copystring);//获取字符串长度

string->p = (char *)calloc(length + 1, sizeof(char));//分配内存

mystrcpy(string->p, copystring);//拷贝字符串

string->reallength = length + 1;//设置长度

}

vo

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

评论

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