0

私は C で文字列 (char*) 操作関数の作成に取り組んできましたが、最新のものは PHP のような部分文字列関数です。他の人が恩恵を受けることができるように投稿しています。機能を改善するための提案があれば感謝します。

4

1 に答える 1

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
}
于 2013-10-10T03:24:10.103 に答える