#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
}
自己实现substr函数——C语言
最新推荐文章于 2024-06-04 18:59:35 发布