类似于PHP的子串函数

时间:2013-10-10 03:24:10

标签: php c substring

我一直在用C创建字符串(char *)操作函数,而我最近的一个是类似PHP的子字符串函数。我发帖,以便其他人可以从中受益,我将不胜感激任何改进功能的建议。

1 个答案:

答案 0 :(得分:0)

这是C中的PHP子字符串函数。

char *substr(char *str, int start, int num)
{
    //find string length
    int len = sj_strlen(str);

    char *result;

    //Return "" if start is longer than str
    if(start > len || (start*-1) > len)
    {
        result = malloc(1);
        *result = '\0';
        return result;
    }

    //Setting pointer to appropriate position
    if(start >= 0)
    {
        str += start;
    }
    else
    {
        str += (len+start);
    }

    //Allocate space for returned substring
    result = malloc(num+1);
    char *ptr = result;

    //Adding characters to the result
    while(num > 0 && *str)
    {
        *ptr++ = *str++;
        num--;
    }

    //Terminating character
    *ptr = '\0';

    return result;
}

int main()
{
    char *str = "Hello, world!";
    printf("%s\n",substr(str,-10,2)); //outputs lo
   printf("%s",substr(str,7,5)); //outputs world
}