您的位置:首页 > 编程语言 > C语言/C++

自己实现substr函数——C语言

2013-11-21 18:57 323 查看
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

char* mysubstr(char* srcstr, int offset, int length) {
    assert(length > 0);
    assert(srcstr != NULL);

    int total_length = strlen(srcstr);//首先获取srcstr的长度
    //判断srcstr的长度减去需要截取的substr开始位置之后,剩下的长度
    //是否大于指定的长度length,如果大于,就可以取长度为length的子串
    //否则就把从开始位置剩下的字符串全部返回。
    int real_length = ((total_length - offset) >= length ? length : (total_length - offset)) + 1;
    char *tmp;
    if (NULL == (tmp=(char*) malloc(real_length * sizeof(char)))) {
        printf("Memory overflow . \n");
        exit(0);
    }
    strncpy(tmp, srcstr+offset, real_length - 1);
    tmp[real_length - 1] = '\0';

    return tmp;
}

int main() {
    char srcstr[] = "this is a test string!";
    char* tmp = mysubstr(srcstr, 8, 8);
    printf("TEST: result = %s\n", tmp);

    free(tmp);
    return 0
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐