[問題] 版本字串比較
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之類的?
感謝指教
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.171.134.9 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1601306354.A.E12.html
※ 編輯: gn00618777 (1.171.134.9 臺灣), 09/28/2020 23:44:33
→
09/28 23:54,
3年前
, 1F
09/28 23:54, 1F
→
09/28 23:56,
3年前
, 2F
09/28 23:56, 2F
→
09/28 23:56,
3年前
, 3F
09/28 23:56, 3F
推
09/29 00:07,
3年前
, 4F
09/29 00:07, 4F
→
09/29 01:34,
3年前
, 5F
09/29 01:34, 5F
推
09/29 04:42,
3年前
, 6F
09/29 04:42, 6F
→
09/29 04:43,
3年前
, 7F
09/29 04:43, 7F
→
09/29 04:43,
3年前
, 8F
09/29 04:43, 8F
→
09/29 09:04,
3年前
, 9F
09/29 09:04, 9F
推
09/29 15:39,
3年前
, 10F
09/29 15:39, 10F
→
09/29 22:25,
3年前
, 11F
09/29 22:25, 11F
→
09/29 22:25,
3年前
, 12F
09/29 22:25, 12F
→
09/29 22:27,
3年前
, 13F
09/29 22:27, 13F
→
09/29 22:28,
3年前
, 14F
09/29 22:28, 14F
→
09/29 22:29,
3年前
, 15F
09/29 22:29, 15F
→
09/29 22:30,
3年前
, 16F
09/29 22:30, 16F
→
09/29 22:30,
3年前
, 17F
09/29 22:30, 17F
→
09/29 23:03,
3年前
, 18F
09/29 23:03, 18F
→
09/29 23:03,
3年前
, 19F
09/29 23:03, 19F
→
09/29 23:03,
3年前
, 20F
09/29 23:03, 20F
→
09/29 23:14,
3年前
, 21F
09/29 23:14, 21F
→
09/29 23:15,
3年前
, 22F
09/29 23:15, 22F
→
09/29 23:15,
3年前
, 23F
09/29 23:15, 23F
→
09/29 23:54,
3年前
, 24F
09/29 23:54, 24F
→
09/29 23:54,
3年前
, 25F
09/29 23:54, 25F
→
09/29 23:54,
3年前
, 26F
09/29 23:54, 26F
推
09/30 16:34,
3年前
, 27F
09/30 16:34, 27F
→
09/30 23:12,
3年前
, 28F
09/30 23:12, 28F
→
09/30 23:15,
3年前
, 29F
09/30 23:15, 29F
→
09/30 23:16,
3年前
, 30F
09/30 23:16, 30F
→
09/30 23:16,
3年前
, 31F
09/30 23:16, 31F
推
10/01 01:21,
3年前
, 32F
10/01 01:21, 32F
→
10/01 01:22,
3年前
, 33F
10/01 01:22, 33F
→
10/01 01:22,
3年前
, 34F
10/01 01:22, 34F
→
10/01 01:23,
3年前
, 35F
10/01 01:23, 35F
→
10/01 01:24,
3年前
, 36F
10/01 01:24, 36F
→
10/01 01:24,
3年前
, 37F
10/01 01:24, 37F
→
10/02 09:07,
3年前
, 38F
10/02 09:07, 38F
→
10/02 09:08,
3年前
, 39F
10/02 09:08, 39F
→
10/02 09:22,
3年前
, 40F
10/02 09:22, 40F
討論串 (同標題文章)