热门 购物 团购 理财 文学 人才 体育 汽车 游戏 软件 军事 音乐 视频 媒体 论坛 博客 银行 交友 综合
一起购 唯品会 梦芭莎 趣玩网 凡客诚品 麦考林 乐淘鞋网 弗克尚品 绿盒子 俏物悄语 新蛋网 当当网 玛萨玛索
拉手网 糯米网 爱帮团 聚划算 58团购 美团网 QQ团购 大众点评团 窝窝团 美淘网 满座网 团宝网 饭统饭团
起点网 榕树下 小说阅读 潇湘书院 红袖添香 幻剑书盟 新浪游戏 太平洋游戏 163邮箱 中国游戏 游戏中国 霏凡软件 铁血军事
Health Sitology Family Finance Appliances Shopping Clothing Education Legal Rituals Beauty Property Travel Pet Medical Cyclopedia History Military Computers Sports Job Anecdote Geographic Mixed Entertain Literature Emotion Agriculture
/**
 * 任何人任何机构皆可用于任何项目,此软件免费无需书面授权
 * 在软件和软件的所有副本中都必须包含版权声明和软件相关注解
 *
 * 模块: strcut.c
 * 简述: 获取字符串的子串 获取字符串的子串
 * 作者: woods zhang  ->  hoojar@163.com -> http://www.hecart.com/
 * 版权: 2006-2018, 张树林 拥有此源码所有版权 (MIT许可协议)
 * Copyright 2006-2018, Woods Zhang All Rights Reserved (The MIT License)
 */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/**
 * 获取字符串的子串
 *
 * @param haystack 原始字符串
 * @param start 如果是正数则从开始位置截取,如果是负数,返回的字符串将从haystack结尾处向前数第start个字符开始
 * @param length 如果是正数返回的字符串将从start处开始最多包括length个字符,如果是负数删除length个字符
 * @param outstr 输出字符串
 * @return 输出字符串
 */
char *substr(char *haystack, int start, int length, char *outstr)
{
    if (haystack == NULL)
    {
        return haystack;
    }

    int cut_len = length;
    int haystack_len = strlen(haystack);

    /*如果开始位置小于0则从后取*/
    if (start < 0)
    {
        start = haystack_len + start;
    }

    /*判断截取长度是否过界,过界则截取总长度-开始位置*/
    if (length <= 0 || length + start > haystack_len)
    {
        cut_len = haystack_len - start;
    }

    strncpy(outstr, &haystack[start], cut_len);
    cut_len = (length < 0) ? cut_len + length : cut_len;
    outstr[cut_len] = '';

    return outstr;
}

/**
 * 获取字符串的子串
 *
 * @param haystack 原始字符串
 * @param start 如果是正数则从开始位置截取,如果是负数,返回的字符串将从haystack结尾处向前数第start个字符开始
 * @param length 如果是正数返回的字符串将从start处开始最多包括length个字符,如果是负数删除length个字符
 * @return 裁切haystack字符串输出
 */
char *strcut(char *haystack, int start, int length)
{
    if (haystack == NULL)
    {
        return haystack;
    }

    int cut_len = length;
    int haystack_len = strlen(haystack);

    /*如果开始位置小于0则从后取*/
    if (start < 0)
    {
        start = haystack_len + start;
    }

    /*判断截取长度是否过界,过界则截取总长度-开始位置*/
    if (length <= 0 || length + start > haystack_len)
    {
        cut_len = haystack_len - start;
    }

    strncpy(haystack, &haystack[start], cut_len);
    cut_len = (length < 0) ? cut_len + length : cut_len;
    haystack[cut_len] = '';

    return haystack;
}

int main(void)
{
    char needle[] = "name";
    char haystack[] = "my name is zhang woods";
    printf("strpos position is:%s ", substr(haystack, 0, -5, haystack));
    printf("strpos position is:%s ", strcut(haystack, -5, -2));

    return 0;
}
Reply content :
Photo link :
即将由人工繁殖的鳝苗加以人工培育。鳝苗培育池宜选用小型水泥池,池深30~40厘米,上沿要高出地面20厘米以上,以防雨水漫池造成逃苗。水池应设进、排水口,并用塑料网布罩住。水池面…  Details
所谓“食用适当的食物”并不只是说要摄取那些食物中所含的维生素。一份面面俱到的营养餐,也可能因为食品加工、贮藏、烹调等使其营养素在不知不觉中被破坏了。…  Details
公司网站 日前,IBM校园招聘门户网站正式开通,并以此揭开了IBM2005年校园招聘和大学生实习项目的序幕。IBM将在该网站实时公布实习项目和校园招聘计划,以期为校园人才提供…  Details
大多SEO草根心里都明白外部链接是搜索引擎优化中很重要的因素,所以大家都使着劲的找外部链接,点石上的有篇文章还翻译了一篇《增加反向链接的101个方法》,这篇文章总结得很…  Details
我们在编写ASP代码的时候,大家都知道可以通过post或者get获得form表单的数据,那么我们如何直接获得其他页面上的数据呢?这就要借助xmlhttp协议了。xmlhttp是xmldom技术的一部分。下面的代码…  Details
随着网络营销时代的来临,越来越多的企业都投身到网络营销这个行列中来了。一时间,众多的企业网站如雨后春笋般蜂拥而起,每个企业都以为只要建一个网站并在搜索引擎竞价排…  Details
 AS3获取当前URL地址以及防盗链前阵子弄了个小游戏,然后想着像以前那样加个防盗链的功能(其实到最后也都没加,小破游戏会有谁来链啊),不过在这里可以讲讲实现的方法。一般…  Details
没有人能永远拥有完美而令人销魂的性爱,也许有一天你突然发现那曾给你带来无限欢悦的感觉如云烟一样再难把握了,你是否了解这种尴尬的原因呢?医学专家这种性高潮突然消失的现…  Details
前一段做个程序,遇到了这样一个问题,想利用相对路径删掉一个文件(实际存在的),老是删不掉. 真是急人呀,最后让我费了好大力气才算把它解决掉,问题不防跟大家说说,万一遇到这样…  Details
问:由于工作需要,我要实时获取家中使用ADSL上网的电脑的IP地址,由于ADSL上网的IP地址是动态的,只要我的电脑重启或断开后重新连接后的IP地址就被更换了。请问,有没有其他方法可以帮…  Details