LINUX常用的字符串,常用LINUX_C字符串处理函数整理

#include 

#include 

#include 

/*删除在src中的str串*/

char *strdel(char *src, char *str)

{

if(NULL == src || NULL == str)

{

return NULL;

}

char *pd = strstr(src, str);

if(NULL == pd)

{

return NULL;

}

int offset = pd - src;

strcpy(&src[offset], &src[offset + strlen(str)]);

return src;

}

/*在指定位置插入串*/

char *strins(char *src, int pos, char *ins)

{

if(NULL == src || NULL == ins)

{

return NULL;

}

int src_len = strlen(src);

if(pos > src_len)

{

return NULL;

}

int ins_len = strlen(ins);

char * st = (char *)malloc(sizeof(char)*(src_len - ins_len));

strcpy(st, &src[pos]);

strcpy(&src[pos + ins_len], st);

free(st);

st = NULL;

strnset(&src[pos], ' ', ins_len);

memcpy(&src[pos], ins, ins_len);

return src;

}

/*替换,将src中的dest串替换成rep*/

char *strrep(char *src, char *dest, char *rep)

{

if(NULL == src || NULL == dest || NULL == rep)

{

return NULL;

}

char *pd = strstr(src, dest);

if(NULL == pd)

{

return NULL;

}

int offset = pd - src;

if(NULL == strdel(src, dest))

{

return NULL;

}

if(NULL == strins(src, offset, rep))

{

return NULL;

}

return src;

}

/*替换所有src中出现的dest为rep*/

char *strallrep(char *src, char *dest, char *rep)

{

if(NULL == src || NULL == dest || NULL == rep)

return NULL;

while(strrep(src, dest, rep) != NULL)

{

}

return src;

}

/*去除字符串前后空格*/

char *strtrim(char *str)

{

if(NULL == str)

return NULL;

int i = 0;

while(str[i] == ' ')

{

i++;

}

strcpy(&str[0], &str[i]);

i = strlen(str) - 1;

while(str[i] == ' ')

{

//printf("%c ", str[i]);

i--;

}

str[i+1] = '\0';

return str;

}

/*取得字符串哈希值*/

unsigned int strhash(char *str)

{

unsigned int seed = 131;

unsigned int hashval = 0;

char *tempstr = str;

while(*tempstr){

hashval = hashval * seed + (*tempstr++);

}

return (hashval & 0x7FFFFFFF);

}

/*获取src串中的label值*/

char *strhtmllabel(char *src, char *label)

{

if(NULL == src || NULL == label)

return NULL;

char *tmp = (char *)malloc(sizeof(char) * strlen(label)+10);

strcpy(tmp, label);

strins(tmp, 0, "

strins(tmp, strlen(tmp) , ">");

//printf("tmp = %s\n", tmp);

char *beg_p = strstr(src, tmp);

if(NULL == beg_p)

{

free(tmp);

tmp = NULL;

return NULL;

}

strins(tmp, 1, "/");

char *end_p = strstr(src, tmp);

if(NULL == end_p)

{

free(tmp);

tmp = NULL;

return NULL;

}

beg_p = &beg_p[strlen(tmp)-1];

*end_p = '\0';

free(tmp);

tmp = NULL;

return beg_p;

}

/*直接将文件读入*/

char *strgetfiletext(const char* path)

{

char *filename = path;

FILE *f = fopen(filename, "rb");

fseek(f, 0, SEEK_END);

long len = ftell(f);

fseek(f, 0, SEEK_SET);

char *data = (char *) malloc(len + 1);

fread(data, 1, len, f);

fclose(f);

f = NULL;

return data;

}

int main()

{

char *str1 = "hello world!";

char str2[300] = {0};

//strcpy 拷贝

strcpy(str2, str1);//strncpy(str2, str1, strlen(str1));

printf("%s\n", str2);

//strrev 转置

strrev(str2);

printf("%s\n", str2);

strrev(str2);

//strstr 取得指定字串的指针

char *p = strstr(str2, "world");

printf("%s\n",p);

//sscanf char* 转 int等一切

char *str_num = "123";

int num = 0;

sscanf(str_num, "%d", &num);

printf("num = %d\n", num);

//sprintf int等一切 转 char*

int val = 456;

char str_val[30] = {30};

sprintf(str_val, "%d", val);

printf("str_val = %s\n", str_val);

//strtok 查找以X串分割开的串 注意:strtok会修改str2

printf("strtok = %s\n", strtok(str2, " "));

char *cp = NULL;

while((cp = strtok(NULL, " ")) != NULL)

printf("strtok = %s\n", cp);

strset(str2, 0x00);

strcpy(str2, str1);

//strupr 转大写字母

strupr(str2);

printf("strupr : %s\n", str2);

//stricmp 忽略大小写比较

printf("stricmp = %d\n", stricmp(str1, str2));

//strlwr 转小写字母

strlwr(str2);

printf("strlwr : %s\n", str2);

//strset/strnset 将串整体赋值

strset(str2, 0x00);//strnset(str2, 0x00, 300);

printf("%s\n", str2);

//替换

strcpy(str2, str1);

strallrep(str2, "l", " ");

printf("%s\n", str2);

//去除前后空格

strcpy(str2, "  hello!  ");

strtrim(str2);

printf("strtrim:%s,%d\n", str2, strlen(str2));

//字符串哈希

strcpy(str2, "hello!");

printf("hashval = %d\n", strhash(str2));

strcpy(str2, "hello world!");

printf("hashval = %d\n", strhash(str2));

strcpy(str2, "hello!");

printf("hashval = %d\n", strhash(str2));

//取html标签

strcpy(str2, "

hello!
");

printf("strhtmllabel:%s\n",strhtmllabel(str2, "div"));

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值