release 版本格式: x.x.xxx
目的 : 1.1.066 以及 1.1.66 ,程式都能认定同一版本。
(为了防止开发者少填1个0,也就是1.1.66)
(少填1个0,会使strncmp 1.1.66 > 1.1.066)
(我是觉得公司都已经规定格式了,1.1.66不就不被允许吗..)
(但上层总是想得比我们下面的人多拉~)
(所以我用了每小数点为分隔来求出每个数字来比)
(因此就能认定1.1.066 == 1.1.66了)
version 会存在既定 array(a_version, b_version)因为到时写成 fun传入来源指标
用strtok系列会改变来源位址,所以用a_version, b_version既定来存
char a_version[] = "1.1.066";
char b_version[] = "1.1.66";
char *a_ptr = NULL;
char *b_ptr = NULL;
char *p,*q;
int i = 0;
int result = 0;
p = strtok_r(a_version, ".", &a_ptr);
q = strtok_r(b_version, ".", &b_ptr);
while(p != NULL && q != NULL) {
if((int)strtoul(p, NULL, 10) > (int)strtoul(q, NULL, 10)) {
result = 1;
break;
} else if((int)strtoul(p, NULL, 10) < (int)strtoul(q, NULL, 10)) {
result = -1;
break;
} else {
//do nothing
}
p = strtok_r(NULL, ".", &a_ptr);
q = strtok_r(NULL, ".", &b_ptr);
}
return result; //1: a>b -1:a<b 0: a==b
请问神人们还有没有更漂亮的写法呢? 例如只用一个既定array之类的?
感谢指教