是否可以在C中编写新的格式说明符?例如,假设%g是格式说明符,它以无符号整数等价物打印ABCD格式的ip地址.
int ip_addr = Some integer printf("ip address = %g", ip_addr);
输出:以ABCD格式打印ip地址
您必须重新实现printf函数(更准确地说是它的格式解析函数).你可以做的是将printf包装在支持ip地址的函数中或执行此操作:
#define FMT_IP "%d.%d.%d.%d" #define FMT_IP_ARG(ip) getA(ip), getB(ip), getC(ip), getD(ip)
其中getX函数或宏获取给定整数的X部分表示IP地址.
然后:
printf("ip address = " FMT_IP "\n", FMT_IP_ARG(ip));