c_cpp 基于uuid_generate_random(...)函数的UUID生成器 - 参见uuid(3)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 基于uuid_generate_random(...)函数的UUID生成器 - 参见uuid(3)相关的知识,希望对你有一定的参考价值。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <uuid/uuid.h>

int main(int argc, char **argv) {
  int c;
  int upper = 0;
  int dashed = 0;
  if (argc > 1) {
    while ((c = getopt(argc, argv, "dhu")) != -1) {
      switch (c) {
      case 'd':
        dashed++;
        break;
      case 'h':
        fprintf(stderr, "Usage: %s [option...]\n\nArguments:\n  " \
          "-d\tPrint uuid string with dash separators\n  " \
          "-u\tPrint uuid with UPPERCASE hexadecimal characters\n", argv[0]
        );
        return 2;
      case 'u':
        upper++;
        break;
      case '?':
        fprintf(stderr, "Unrecognized option: '-%c'\n", optopt);
        return 1;
      }
    }
  }

  uuid_t uu;
  uuid_generate_random(uu);

  if (dashed) {
    if (upper) {
      uuid_string_t uu_str;
      uuid_unparse_upper(uu, (char *)uu_str);
      printf("%s\n", uu_str);
    } else {
      uuid_string_t uu_str;
      uuid_unparse_lower(uu, (char *)uu_str);
      printf("%s\n", uu_str);
    }
  } else {
    if (upper) {
      for (size_t i = 0; i < sizeof(uu); i++) {
        printf("%.2X", uu[i]);
      }
      printf("\n");
    } else {
      for (size_t i = 0; i < sizeof(uu); i++) {
        printf("%.2x", uu[i]);
      }
      printf("\n");
    }
  }
}

以上是关于c_cpp 基于uuid_generate_random(...)函数的UUID生成器 - 参见uuid(3)的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 基于Caffe c ++批量预测

c_cpp 基于样本的图灵虚拟机c

c_cpp 基于共享内存的双缓存实现

c_cpp 一个基于宏的简单C错误记录器

c_cpp 要求在C中实现的问题,使用基于字符的答案

c_cpp FreeRTOS的基于信号量和委托的任务数据共享与同步