C程序中唯一序列号的生成实例详解
发布时间 - 2026-01-11 02:02:26 点击率:次C程序中唯一序列号的生成实例详解

在实际的软件开发项目中,经常会涉及唯一序列号的生成。本文以一个实际的程序为例,介绍了唯一序列号的生成过程。
本文生成的序列号的样式为:MMDDHHMINSS_XXXXXX。
程序如下:
* 修改记录1:// 修改历史记录, 包括修改日期、版本号、修改人及修改内容
* 修改日期: 20140603
* 版 本 号: V1.0
* 修 改 人: Zhou Zhaoxiong
* 修改内容: 创建
**********************************************************************/
#include <afxinet.h>
// 数据类型
typedef unsigned char UINT8;
typedef unsigned char UINT16;
typedef unsigned int UINT32;
typedef signed int INT32;
// 时间信息结构体
typedef struct
{
UINT8 second; /* 0-59 */
UINT8 minute; /* 0-59 */
UINT8 hour; /* 0-23 */
UINT8 day; /* 1-31 */
UINT8 month; /* 1-12 */
UINT16 year; /* 1994-2099 */
UINT8 week; /* 1-7 */
UINT8 Count10ms; /* 0-99 */
} ClockStruc;
// 函数声明
void GetCurTime(ClockStruc *pCurrentTime); // 获取当前时间
INT32 CreateSerial(UINT8 *pSerialID, UINT32 iSerialSize); // 创建序列号
INT32 main(void); // 主函数
/**********************************************************************
* 功能描述: 获取当前时间
* 输入参数: 无
* 更多精彩内容:http://www.bianceng.cn/Programming/C/
* 输出参数: pCurrentTime-当前时间结构体
* 返 回 值: 无
* 其它说明: 无
* 修改日期 版本号 修改人 修改内容
* ----------------------------------------------------------------------------
* 20140603 V1.0 Zhou Zhaoxiong 创建
**********************************************************************/
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;
}
}
/**********************************************************************
* 功能描述: 创建序列号
* 输入参数: iSerialSize: 序列号长度
* 输出参数: pSerialID: 序列号
* 返 回 值: 0-成功 -1-失败
* 其它说明: 序列号的样式: MMDDHHMINSS_XXXXXX
* 修改日期 版本号 修改人 修改内容
* --------------------------------------------------------------
* 20140603 V1.0 Zhou Zhaoxiong 创建
***********************************************************************/
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;
}
/****************************************************************
* 功能描述: 主函数
* 输入参数: 无
* 输出参数: 无
* 返 回 值: 0-执行成功 -1-执行失败
* 其他说明: 无
* 修改日期 版本号 修改人 修改内容
* ------------------------------------------------------------------------
* 20140603 V1.0 Zhou Zhaoxiong 创建
****************************************************************/
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个序列号为: %s\n", iLoopFlag + 1, szSerialID);
}
return 0;
}
程序运行的结果如下图所示:
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# C程序中唯一序列号的生成
# C程序序列号
# MFC程序设计常用技巧汇总
# C程序实现整数的素数和分解问题
# C程序读取键盘码的方法
# 希望能
# 为例
# 所示
# 历史记录
# 谢谢大家
# 经常会
# 开发项目
# 如下图
# 星期天
# 人及
# 打印出来
# 在实际
# hour
# minute
# struct
# signed
# int
# year
# Count10ms
# week
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出
JavaScript中的标签模板是什么_它如何扩展字符串功能
香港服务器建站指南:免备案优势与SEO优化技巧全解析
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
如何撰写建站申请书?关键要点有哪些?
香港服务器如何优化才能显著提升网站加载速度?
进行网站优化必须要坚持的四大原则
Laravel怎么实现支付功能_Laravel集成支付宝微信支付
如何构建满足综合性能需求的优质建站方案?
Android Socket接口实现即时通讯实例代码
Laravel怎么生成URL_Laravel路由命名与URL生成函数详解
佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】
如何用wdcp快速搭建高效网站?
Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康
Laravel如何使用Livewire构建动态组件?(入门代码)
Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧
制作公司内部网站有哪些,内网如何建网站?
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
用yum安装MySQLdb模块的步骤方法
Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布
JS实现鼠标移上去显示图片或微信二维码
如何在不使用负向后查找的情况下匹配特定条件前的换行符
手机软键盘弹出时影响布局的解决方法
长沙做网站要多少钱,长沙国安网络怎么样?
Laravel如何编写单元测试和功能测试?(PHPUnit示例)
JavaScript如何实现音频处理_Web Audio API如何工作?
Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】
怎么用AI帮你设计一套个性化的手机App图标?
如何快速使用云服务器搭建个人网站?
如何在阿里云ECS服务器部署织梦CMS网站?
JS经典正则表达式笔试题汇总
iOS UIView常见属性方法小结
ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集
b2c电商网站制作流程,b2c水平综合的电商平台?
UC浏览器如何设置启动页 UC浏览器启动页设置方法
利用JavaScript实现拖拽改变元素大小
网站制作软件免费下载安装,有哪些免费下载的软件网站?
Java遍历集合的三种方式
如何在香港免费服务器上快速搭建网站?
laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法
Win11怎么设置默认图片查看器_Windows11照片应用关联设置
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
如何在万网自助建站平台快速创建网站?
原生JS获取元素集合的子元素宽度实例
黑客如何通过漏洞一步步攻陷网站服务器?
,南京靠谱的征婚网站?
详解vue.js组件化开发实践
JavaScript模板引擎Template.js使用详解
laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法
Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】

