博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
常用LINUX_C字符串处理函数整理
阅读量:6930 次
发布时间:2019-06-27

本文共 4655 字,大约阅读时间需要 15 分钟。

hot3.png

#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;}

转载于:https://my.oschina.net/crooner/blog/220503

你可能感兴趣的文章
C++中类的成员函数要注意的地方
查看>>
kvm虚拟化入门
查看>>
django migrate 字段类型更改ManyToMany erros
查看>>
jquery架构分析-core
查看>>
tbs(腾讯浏览器)视频相关配置
查看>>
oracle 里面定时执行任务设置
查看>>
PHP Date()函数详细参数
查看>>
软件设计原则
查看>>
Redis-Cluster实战--5.使用redis-cli安装
查看>>
clojure ring 让webapp变得毫无神秘感
查看>>
app名称国际化
查看>>
UIActionSheet使用方法
查看>>
WAMP中无go-pear.bat文件的安装
查看>>
XXS常见攻击相关
查看>>
从源码的角度解析Mybatis的会话机制
查看>>
FTPClient上传 中文目录、中文文件名乱码问题
查看>>
UCloud 分布式消息队列 UMQ 设计与架构演进
查看>>
通过反编译字节码来理解 Java 枚举
查看>>
wedstom快捷键设置
查看>>
重启ipconfig 时,出现错误:Error: Connection activation failed.....解决方法
查看>>