#include "stdint.h" #include <stdint.h> #include <stdio.h> #include <string.h> // 定义 IP 联合体 typedef union __IP_tu { uint32_t all; // 总的10进制值 uint8_t segments[4]; // 每段的值 } IP_tu; int main() { char s[16] = {}; IP_tu result[2] = {}; uint32_t length = 0; uint32_t i,j,start,end,k=0; uint8_t temp = 0; scanf("%s\n%d", s, &(result[1].all)); length = strlen(s); for (i=0,start=0,end=0; i<length; ++i) { // 通过 '.' 分割出段 if (s[i]=='.' || i==length-1) { if (i==length-1) { end = i; } else { end = i-1; } // 计算每段的值(10进制) temp = 0; for (j=start; j<=end; ++j) { temp *= 10; temp += s[j]-'0'; } // 将值存入结构联合体数组的对于段位置 result[0].segments[3-k] = temp; ++k; start = i+1; } else {} } printf("%u\n%d.%d.%d.%d", result[0].all, result[1].segments[3], result[1].segments[2] , result[1].segments[1], result[1].segments[0]); return 0; }