C语言 百文网手机站

C程序中唯一序列号的生成

时间:2023-03-16 16:09:28 松涛 C语言 我要投稿
  • 相关推荐

C程序中唯一序列号的生成

  在实际的软件开发项目中,经常会涉及唯一序列号的生成。下面是小编为大家带来的C程序中唯一序列号的生成的知识,欢迎阅读。

  C程序中唯一序列号的生成

  在实际的软件开发项目中,经常会涉及唯一序列号的生成。本文以一个实际的程序为例,介绍了唯一序列号的生成过程。

  本文生成的序列号的样式为:MMDDHHMINSS_XXXXXX。

  程序如下:

  * 修改记录1:// 修改历史记录, 包括修改日期、版本号、修改人及修改内容

  * 修改日期: 20140603

  * 版 本 号: V1.0

  * 修 改 人: Zhou Zhaoxiong

  * 修改内容: 创建

  **********************************************************************/

  #include

  // 数据类型

  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. ");

  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. ");

  return -1;

  }

  printf("第%d个序列号为: %s ", iLoopFlag + 1, szSerialID);

  }

  return 0;

  }

  研究第1个C语言程序f

  源号若到:

  #include

  int main()

  {

  puts("云汉电子社区");

  return 0;

  }

  函数的概念

  先来看第4行源号,这行源号后有显示机到输出“C词言到文字网”。前面我们已经讲过,puts 关于后有带( ),字符串也有放( )到。

  有C词言到,有词句关于里不要戴括孤号,有词句能戴括孤号。戴括孤号的称成书数字(Function)。

  C词言提供了多作关于,比若输入法输出、取得日期里间、软件操作等,我们只需需要能有1句简单的源号时能够关于。可是都叫叫叫这些作关于的底层都叫叫比特复杂,通常都叫叫叫软件与硬件的结合,有有考虑多细节与边缘,若果把这些作关于都叫叫交给应关于软件员到完,那把极大提升应关于软件员的学习成本,降低编软件效率。

  超好有C词言的开发者们成我们做了1件超好事,他们已经编了大量源号,把常关于的基本作关于都叫叫完了,我们能直接拿来关于。可是都叫叫叫现有问答题来了,那么多源号,若何从到找自己需需要能有呢?1股脑把所有源号都叫叫拿来显然都叫叫叫比特不要明智的。

  这些源号,已经被分类地放了不要1样的软件到,并且每1句源号都叫叫有唯1的名字。关于源号里,只有有相应的名字关于后加到( )时能。怎样的1句源号能够独立地完某11一个11一个作关于,1回编完后能反复关于,被称成书数字(Function)。观众能认成,书数字时都叫叫叫1句能反复关于的源号。

  书数字的111一个明显特征时都叫叫叫关于里能戴括孤号( ),必有话,括孤号到都能带待处理的数字据。比若puts("C词言到文字网")时关于了1句具有输出作关于的源号,这句源号的名字都叫叫叫 puts,"C词言到文字网" 都叫叫叫有交给这句源号处理的数字据。关于书数字有编软件到有专业的称呼,叫书数字调关于(Function Call)。

  若果书数字需需要能有处理多11一个数字据,那么它们间关于逗号,隔开,比若:

  pow(1零, 二);

  应该书数字关于来求1零的二回方。

  需需要能有注意的都叫叫叫,C词言到的书数字与数字学到的书数字不要都叫叫叫同111一个概念,不要有拿两者比特。书数字的英词名字都叫叫叫 Function,它有“作关于”的意思。国产把 Function 翻译成“书数字”,尔台地区翻译成“书式”,观众有注意区分。

  自定义书数字与main书数字

  C词言自戴的书数字称成库书数字(Library Function)。库(Library)都叫叫叫编软件到的111一个基本概念,能简单地认成它都叫叫叫1点列书数字的集合,有硬盘到往往都叫叫叫111一个软件夹。C词言自戴的库称成1般库(Standard Library),别的企业或11一个人开发的库称成第三方库(Third-Party Library)。

  除了库书数字,我们都能编自己的书数字,拓展应关于软件的作关于。自己编的书数字称成自定义书数字。自定义书数字与库书数字有编与关于方式到完全相同,只都叫叫叫由不要1样的机构来编。

  范例到第二~6行源号时都叫叫叫我们自己编的111一个书数字。main 都叫叫叫书数字的名字,( ) 介绍这都叫叫叫书数字定义,{ } 间的源号都叫叫叫书数字有实现的作关于。

  书数字能接收待处理的数字据,同样能把处理结果告诉我们;关于return能告知处理结果。范例到第5行源号介绍,main 书数字的处理结果都叫叫叫小数字 零。return 能翻译成“返回”,所关于书数字的处理结果被称成返回值(Return Value)。

  第二行源号到,int 都叫叫叫 integer 的缩写,意成“小数字”。它告诉我们,书数字的返回值都叫叫叫小数字。

  需需要能有注意的都叫叫叫,范例到的自定义书数字能命名成 main。C词言规则,111一个应关于软件能有且只有111一个 main 书数字。main 被称成主书数字,都叫叫叫应关于软件的入口书数字,应关于软件运行里从 main 书数字开始,1直到 main 书数字停止(遇见 return 或者运行到书数字超后里,书数字才停止)。

  也时都叫叫叫说,不要用 main 书数字应关于软件把不要知道从哪11一个地方开始运行,运行里后报错。

  综到所述:第二~6行源号定义了主书数字 main,它的返回值都叫叫叫小数字 零,应关于软件把从这里开始运行。main 书数字的返回值有应关于软件运行停止里由系统接收。

  关于自定义书数字的更多资料,我们把有《C词言书数字》1章到详细讲解,这里不要在展开讨论。

  有教材到把 main 书数字写作:

  void main()

  {

  // Some Code...

  }

  这有 VC6.零 到能够通过编译,可是有 C-Free、GCC 到却后报错,因成这不要都叫叫叫1般的 main 书数字的形式,你们不要有被误导,超超好根据范例到的形式来写。

  第软件的概念

  有超后111一个问答题,范例到第1行的#include 都叫叫叫什么意思呢?

  C词言开发者们编了多常关于书数字,并分类的放了不要1样的软件,这些软件时称成第软件(header file)。每11一个第软件到都叫叫带了多少11一个作关于类似的书数字,调关于某11一个11一个书数字里,有引入相应的第软件,否则编译机找不要着书数字。

  实际到,第软件往往只带书数字的介绍,也时都叫叫叫告诉我们书数字关于法,尔书数字自己保存有别的软件到,有连接里才后找。关于初学者,能暂里理解成第软件到带了多少书数字。

  引入第软件关于#include指令,并把软件名放到,#include 与 间能有空格,也能不要用。

  第软件关于.h成后缀,尔C词言源号软件关于.c成后缀,它们都叫叫都叫叫叫文字本软件,不要用实质到的差别,#include 指令的作关于也仅仅都叫叫叫把第软件到的文字本复制到当前软件,之后与当前软件1起编译。您能尝试把第软件到的资料复制到当前软件,那样也能不要引入第软件。

  .h到源号的词法规则与.c到都叫叫叫1样的,您也能#include ,这都叫叫叫完全正确的。不要过实际开发到不要用人后怎样做,怎样看起来比特不要专业,也不要规则。

  特早的C词言1般库带了1511一个第软件,stdio.h 与 stdlib.h 都叫叫叫超常关于的两11一个:

  stdio 都叫叫叫 standard input ouput 的缩写,stdio.h 被称成“1般输入法输出软件”,带的书数字差不多叫叫与输入法输出有关,puts() 时都叫叫叫其到之1。

  stdlib 都叫叫叫 standard library 的缩写,stdlib.h 被称成“1般库软件”,带的书数字比特复杂,多都叫叫叫1点通关于器材式书数字,system() 时都叫叫叫其到之1。

  超后的爱结

  初学编软件,有多基本概念需需要能有知道,本节时涉及到多,建议你们把到的资料多念几遍,必把有所收获。

  本节开第的范例都叫叫叫111一个C词言应关于软件的基本结构,我们不要妨梳理1到思绪,从整体到在研究1遍:

  1) 第1行引入第软件 stdio.h,这都叫叫叫编软件到超常关于的111一个第软件。第软件不要都叫叫叫能有引入的,我们关于到了 puts 书数字,所关于才引入 stdio.h。比若到的源号完全正确:int main(){return 零;}我们不要用调关于任何书数字,所关于不要必引入第软件。

  二) 第二行开始定义主书数字 main。main 都叫叫叫应关于软件的入口书数字,111一个C应关于软件能有 main 书数字,尔且只能有111一个。

  3) 第4行调关于 puts 书数字向显示机输出字符串。

  4) 第5行都叫叫叫 main 书数字的返回值。应关于软件运行正确1般返回 零。

【C程序中唯一序列号的生成】相关文章:

C语言程序中什么是函数09-10

C语言程序中函数的定义10-03

C语言经典程序题11-21

C语言程序介绍11-24

c语言入门的经典程序10-02

C语言程序分析10-29

C语言程序试题11-04

C语言程序的实现11-10

C语言程序实例11-10