本文共 1394 字,大约阅读时间需要 4 分钟。
给定一个有效的 IPv4 地址,目标是将其转换为无效化版本。无效化的定义是将每个“.”替换为“[.]”。例如,输入“1.1.1.1”应输出“1[.]1[.]1[.]1”。
char * defangIPaddr(char * address) { if (address == NULL) { return NULL; } int a, b, c, d; sscanf(address, "%d.%d.%d.%d", &a, &b, &c, &d); char *res = (char *)malloc(sizeof(char) * 32); memset(res, 0, sizeof(char) * 32); sprintf(res, "%d[.]%d[.]%d[.]%d", a, b, c, d); return res;} char * defangIPaddr(char * address) { int len = strlen(address); char *add = (char *)malloc(len + 7); int k = 0; for (int i = 0; i < len; i++) { if (address[i] == '.') { add[k++] = '['; add[k++] = '.'; add[k++] = ']'; } else { add[k++] = address[i]; } } add[k] = '\0'; return add;} 两种方法各有优劣。若需要处理固定长度且不介意使用标准库函数,可以选择方法一;若希望更高的灵活性,可以选择方法二。根据具体需求选择合适的方案即可。
转载地址:http://moio.baihongyu.com/