C语言的版本比较
对于C的语言的字符串比较,目前使用比较多的是将版本分段进行比较,下面就是使用C语言实现的版本比较,可用于物联网、嵌入式等的固件版本检测。
#define VERSION_PRE_LEN10/**
* 将字符串形式的版本号转为数组形式的版本号
* @param version 字符串版本号
* @param ver_arr 数组形式版本号
* @return
*/
int get_version(char *version, int *ver_arr)
{
if (version == NULL)
return -1;
int index = 0;
char num_str[VERSION_PRE_LEN];
char *cur = version;
char *pos = strchr(version, '.');
while (pos != '\0') {
memset(num_str, 0, VERSION_PRE_LEN);
if (cur == version) {
memcpy(num_str, cur, pos - cur);
} else {
memcpy(num_str, cur + 1, pos - cur);
}ver_arr[index] = atoi(num_str);
cur = pos;
pos = strchr(pos + 1, '.');
index++;
}memset(num_str, 0, VERSION_PRE_LEN);
memcpy(num_str, cur + 1, version + strlen(version) - cur);
ver_arr[index] = atoi(num_str);
return 0;
}/**
* 字符串形式的版本号比较
* @param version1
* @param version2
* @param count 段数
* @return 0: version1=version2, 1: version1>version2, -1:version1 ver_arr2[index]) {
return 1;
} else if (ver_arr1[index] < ver_arr2[index]) {
return -1;
}
}return 0;
}
【C语言的版本比较】测试
#include
#include
#include int main()
{
char version1[] = "42345.724345.2323450.23450.248.25234520";
char version2[] = "42345.724345.2323450.23450.248.25234520";
if (compare_version(version1, version2, 6) > 0) {
printf("version1 > version2");
} else if (compare_version(version1, version2, 6) < 0) {
printf("version1 < version2");
} else {
printf("version1 = version2");
}return 0;
}
推荐阅读
- 热闹中的孤独
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 一个人的旅行,三亚
- 布丽吉特,人生绝对的赢家
- 慢慢的美丽
- 尽力
- 一个小故事,我的思考。
- 家乡的那条小河
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量