C语言如何比较两个版本号的大小,例如版本号A="1.12.2" 版本号B="2.1.21"
时间: 2023-07-21 13:08:44 浏览: 139
对于版本号中包含多个点号的情况,我们可以使用`strtok()`函数将版本号分割为多个部分,然后逐个比较数字。
以下是一个示例代码,用于比较版本号大小:
```c
#include <stdio.h>
#include <string.h>
int compareVersions(const char* versionA, const char* versionB) {
char *tokenA, *tokenB;
char *endA, *endB;
int numA, numB;
// 使用strtok()函数将版本号分割为多个部分
tokenA = strtok((char*)versionA, ".");
tokenB = strtok((char*)versionB, ".");
while (tokenA != NULL && tokenB != NULL) {
// 将每个部分的数字转换为整数
numA = strtol(tokenA, &endA, 10);
numB = strtol(tokenB, &endB, 10);
// 比较数字大小
if (numA < numB) {
return -1;
} else if (numA > numB) {
return 1;
}
// 继续比较下一个部分
tokenA = strtok(NULL, ".");
tokenB = strtok(NULL, ".");
}
// 如果版本号A还有剩余部分,则版本号A较大
if (tokenA != NULL) {
return 1;
}
// 如果版本号B还有剩余部分,则版本号B较大
if (tokenB != NULL) {
return -1;
}
// 版本号相同
return 0;
}
int main() {
const char* versionA = "1.12.2";
const char* versionB = "2.1.21";
int result = compareVersions(versionA, versionB);
if (result < 0) {
printf("版本号A较小\n");
} else if (result > 0) {
printf("版本号A较大\n");
} else {
printf("版本号相同\n");
}
return 0;
}
```
在上述示例中,compareVersions()函数使用strtok()函数将版本号分割为多个部分,并逐个比较数字的大小。如果某个部分的数字不同,直接返回比较结果。如果所有部分的数字都相同,则返回结果为0,表示版本号相同。
对于你的例子,版本号A="1.12.2"较小,所以程序会输出"版本号A较小"。