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表名映射【步骤】