版本号设计
设计 版本号
2023-09-27 14:22:00 时间
参考:
/** * 比较版本号 GNU版本号示例: 3.5.20.9527 主版本号 次版本号 修正版本号 编译版本号 * * @param v1 第一个版本号 * @param v2 第二个版本号 * * @return 如果版本号相等,返回 0, * 如果第一个版本号低于第二个,返回 -1,否则返回 1. */ int compareVersion(const char *v1, const char *v2) { assert(v1); assert(v2); const char *p_v1 = v1; const char *p_v2 = v2; while (*p_v1 && *p_v2) { char buf_v1[32] = {0}; char buf_v2[32] = {0}; char *i_v1 = strchr(p_v1, '.'); char *i_v2 = strchr(p_v2, '.'); if (!i_v1 || !i_v2) break; if (i_v1 != p_v1) { strncpy(buf_v1, p_v1, i_v1 - p_v1); p_v1 = i_v1; } else p_v1++; if (i_v2 != p_v2) { strncpy(buf_v2, p_v2, i_v2 - p_v2); p_v2 = i_v2; } else p_v2++; int order = atoi(buf_v1) - atoi(buf_v2); if (order != 0) return order < 0 ? -1 : 1; } double res = atof(p_v1) - atof(p_v2); if (res < 0) return -1; if (res > 0) return 1; return 0; } int main(int argc, char *argv[]) { assert(compare_version("2.2.1", "2.2.0") > 0); assert(compare_version("2.2.1", "2.1.9") > 0); assert(compare_version("2.2.1", "2.2.01") == 0); assert(compare_version("2.2.1", "2.2.1") == 0); assert(compare_version("2.2", "2.1.1") > 0); assert(compare_version("2.2", "2.2.1") < 0); assert(compare_version("2.2.3.1", "2.2.3.5") < 0); assert(compare_version("2.2.3.1", "2.2.3.0") > 0); assert(compare_version("2.2", "2.2.1.4.5") < 0); assert(compare_version("2.2.3.4", "2.2.4.4.5") < 0); assert(compare_version("2.2.3.4.5.6", "2.2.3.4.5.12") < 0); assert(compare_version("2.2.3.4.5.6", "2.2.2.4.5.12") > 0); assert(compare_version("3.0.0.1", "3.0.0.0.1") > 0); assert(compare_version("3.1", "3.1.") == 0); puts("test pass."); }
用到的库函数:
- atoi
- itoa
- double modf(double x, double *intptr);提取双精度浮点数的小数部分和整数。参考
#include <stdio.h> #include <math.h> int main() { double x=3.1415, intpart; //为变量赋初值 double fractpart = modf(x, &intpart); //求3.1415的小数部分 printf("intpart: %lf\nfractpart: %lf\n", intpart, fractpart); return 0; } 运行结果: intpart: 3.000000 fractpart: 0.141500
相关文章
- 笔试题-2023-星宸-数字IC设计【个人解答版】
- 【FPGA教程案例7】基于verilog的计数器设计与实现
- u一点·料:阿里巴巴1688ued体验设计践行之路
- [转]响应式WEB设计学习(1)—判断屏幕尺寸及百分比的使用
- 《Java学习指南》—— 1.4 设计安全
- 《网页设计心理学》一2.3 你为什么会听从完全陌生的人?
- SwiftUI Widget教程设计篇之 03 获得舒适的信息密度
- 力扣解法汇总1797. 设计一个验证系统
- 2016 系统设计第一期 (档案一)MVC form数据提交
- 数字IC设计中为什么要避免锁存器(Latches)
- 【历史上的今天】12 月 23 日:Python 起源;TCP/IP 协议发明者出生;设计第一台 PC 的人诞生
- 基于TTCN-3测试系统的逆向模型发现框架的设计
- 电商系统 系统设计借鉴