您的位置:首页 > 其它

比较版本号的大小 新旧

2017-05-17 21:17 531 查看


#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
using namespace std;

/************************************************************************/
/*                判断任意两个版本号的大小,数字越大代表版本越新            */
/************************************************************************/
#define V_LEN 50
#define INPUT_LEN 100
#define V_ARR_LEN 20

//3. 以'.'拆分
void divPoint(char *v, char *delims, int *v_arr)
{
int i = 0;
//int k = 0;
char *result = NULL;
result = strtok(v, delims);
while(result != NULL)
{
v_arr[i++] = atoi(result);//字符串转换成整型数
result = strtok(NULL, delims);
}
//for(k = 0;k < i; k++)
//{
//  printf("%d ", v1_arr[k]);
//}
}

//4. 比较新版本
void newVersion(int *v1_arr, int *v2_arr)
{
int i = 0;
for (i = 0; i <= V_ARR_LEN; i++)
{
if (v1_arr[i] < v2_arr[i])
{
cout<<-1;
break;
}
else if(v1_arr[i] > v2_arr[i])
{
cout<<1;
break;
}
if (i == V_ARR_LEN)
{
cout<<0;
break;
}
}
}

int main()
{
string s;
char input[INPUT_LEN] = {0};
char v1[V_LEN] = {0};
char v2[V_LEN] = {0};

int v1_arr[V_ARR_LEN] = {0};
int v2_arr[V_ARR_LEN] = {0};
int i = 0;
char *ret = NULL;
char delims[] = ".";

BEGIN:
//1. 输入两个版本号 以空格隔开
getline(cin, s);
//s = "12.34 56.78";
strncpy(input,s.c_str(), s.length());
//printf("%s\n", input);

//判断输入格式中是否有空格
ret = strchr(input, ' ');
if (ret == NULL)
{
cout<<"usage:1.2.5空格2.7"<<endl;
goto BEGIN;
}

//2. 以空格 隔开 两个版本
while(input[i++] != ' ');
strncpy(v1, input, i);
strncpy(v2, &input[i], strlen(input));

//3. 以'.'拆分
divPoint(v1, delims, v1_arr);
divPoint(v2, delims, v2_arr);

cout<<endl;
//4. 比较新版本
newVersion(v1_arr, v2_arr);

cout<<endl;
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  版本 字符串 数据