C语言几种字符串处理demo

1. 插入

将s2插入s1第n个位置中

/** 
 * @brief insert s2 into s1 at position n
 * 
 * @param s1
 * @param s2
 * @param n 
 * 
 * @return 0
 */
int strins(char *s1, char *s2, size_t n)
{
    size_t n1, n2;
 
    n1 = strlen(s1);
    if (n > n1)
        n = n1;
 
    n2 = strlen(s2);
    memmove(s1 + n + n2, s1 + n, n1 - n + 1);
    memcpy(s1 + n, s2, n2);
 
    return 0;
}

2.截取

截取str1中 位于str2和str3中的字符串,并输出到out_char

/** 
 * @brief save the string between str2 to str3 in str1 to out_str
 * 
 * @param str1
 * @param str2
 * @param str3
 * @param out_str
 * 
 * @return s1
 */
int mystrstr(char* str1,char* str2,char* str3,char* out_str)
{
    char dest[100] = {0};
    memset(dest,0,100);
    char *p1, *p2,*p3;
    p1 = strstr(str1, str2);
     //printf("p1 = %s\n",p1);
    int len = strlen(p1)+1;
    p3 = (char*)malloc(sizeof(char)*len);
    strcpy(p3, p1+1);
     //printf("p3 = %s\n",p3);
    p2 = strstr(p3, str3);
    printf("p2 = %s\n",p2);
    if (p3 == NULL || p2 == NULL || p3 > p2) {
     // printf("Not found\n");
      return  -1;
   } else {
        //p3 += strlen("str2");
        memcpy(dest, p3, p2 - p3);
        //printf("%s\n", dest);
   }
    //printf("dest = %s\n", dest);
    memcpy(out_str,dest,sizeof(dest));
    free(p3);

    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值