自己实现substr函数——C语言
来源:互联网 发布:mac git图形化工具 编辑:程序博客网 时间:2024/05/19 12:37
#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}