我需要 ipv6 地址中的最后 2 列。(2001:1234:asdd:xeed:212:4b00:61) --> (4b0061) 我还需要知道如何释放 ipv6_parser 函数的返回。
当我试图释放结果时,它给出了“分段错误”。
char* ipv6_parser(char* str){
char *ret = malloc(sizeof(str));
ret = str;
ret = strtok(ret,":");
int i ;
for (i=0;i<5;i++){
ret = strtok(NULL, ":");
}
char *last = strtok(NULL, ":");
sprintf(ret,"%s%s",ret,last);
return ret;
}
int main(){
mtrace();
char *str=strdup("2001:1234:asdd:xeed:212:4b00:61");
char* result = ipv6_parser(str);
printf("\nResult - %s\n",result);
free(result);
free(str);
return(0);
}