C程序中唯一序列号的生成实例详解
在实际的软件开发项目中,经常会涉及唯一序列号的生成。本文以一个实际的程序为例,介绍了唯一序列号的生成过程。
本文生成的序列号的样式为:MMDDHHMINSS_XXXXXX。
程序如下:
* 修改记录1:// 修改历史记录, 包括修改日期、版本号、修改人及修改内容
* 修改日期: 20140603
* 版 本 号: V1.0
* 修 改 人: Zhou Zhaoxiong
* 修改内容: 创建
**********************************************************************/
#include
// 数据类型
typedef unsigned char UINT8;
typedef unsigned char UINT16;
typedef unsigned int UINT32;
typedef signed intINT32;
// 时间信息结构体
typedef struct
{
UINT8 second;
UINT8 minute;
UINT8 hour;
UINT8 day;
UINT8 month;
UINT16 year;
UINT8 week;
UINT8 Count10ms;
} ClockStruc;
// 函数声明
void GetCurTime(ClockStruc *pCurrentTime);// 获取当前时间
INT32 CreateSerial(UINT8 *pSerialID, UINT32 iSerialSize); // 创建序列号
INT32 main(void); // 主函数
void GetCurTime(ClockStruc *pCurrentTime)
{
SYSTEMTIME tCurrentTime;
GetLocalTime(&tCurrentTime);
pCurrentTime->month = (UINT8)tCurrentTime.wMonth;
pCurrentTime->day = (UINT8)tCurrentTime.wDay;
pCurrentTime->hour = (UINT8)tCurrentTime.wHour;
pCurrentTime->minute = (UINT8)tCurrentTime.wMinute;
pCurrentTime->second = (UINT8)tCurrentTime.wSecond;
pCurrentTime->week = (UINT8)tCurrentTime.wDayOfWeek;
if (pCurrentTime->week == 0) // 表示星期天
{
pCurrentTime->week = 7;
}
}
INT32 CreateSerial(UINT8 *pSerialID, UINT32 iSerialSize)
{
ClockStruc tClock = {0};
static UINT32 iTailNum = 0;
if (NULL == pSerialID)
{
printf("CreateSerial: input parameter is NULL.n");
return -1;
}
GetCurTime(&tClock);
_snprintf((char *)pSerialID, iSerialSize, "%02d%02d%02d%02d%02d_%06d",
tClock.month, tClock.day, tClock.hour, tClock.minute, tClock.second, iTailNum);
iTailNum ++;
if (iTailNum > 999999)
{
iTailNum = 0;
}
return 0;
}
INT32 main(void)
{
UINT32 iLoopFlag = 0; // 该变量用于表示循环标志
INT32 iRetValue = 0; // 该变量用于表示调用CreateSerial函数返回的值
UINT8 szSerialID[50] = {0}; // 该变量用于存放生成的序列号
// 生成10个序列号, 并打印出来
for (iLoopFlag = 0; iLoopFlag < 10; iLoopFlag ++)
{
iRetValue = CreateSerial(szSerialID, sizeof(szSerialID));
if (iRetValue != 0)
{
printf("exec CreateSerial failed.n");
return -1;
}
printf("第%d个序列号为: %sn", iLoopFlag + 1, szSerialID);
}
return 0;
}
程序运行的结果如下图所示:
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!



