C语言中如何从字符串中提取UUID
时间: 2024-12-21 17:27:16 浏览: 4
在C语言中,UUID(Universally Unique Identifier,通用唯一标识符)通常是以16进制表示的,由8-4-4-4-12的形式,每部分之间用连字符 `-` 分隔。如果你有一个符合这种格式的字符串,可以使用字符串处理函数结合一些基础的算术操作来提取各个部分。这里提供一个简单示例,不过请注意,真正的UUID生成通常需要专门的库如libuuid或Boost UUID:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 假设输入字符串格式为:"123e4567-e89b-12d3-a456-426655440000"
#define UUID_DELIMITER '-'
char* extract_UUID_from_string(char* uuid_str) {
size_t len = strlen(uuid_str);
if (len != 36 || uuid_str[8] != UUID_DELIMITER || uuid_str[13] != UUID_DELIMITER || uuid_str[18] != UUID_DELIMITER || uuid_str[23] != UUID_DELIMITER) {
return NULL; // 格式错误
}
char* parts[5];
parts[0] = strtok(uuid_str, UUID_DELIMITER); // 提取第一部分
parts[1] = strtok(NULL, UUID_DELIMITER); // 提取第二部分
parts[2] = strtok(NULL, UUID_DELIMITER); // 提取第三部分
parts[3] = strtok(NULL, UUID_DELIMITER); // 提取第四部分
parts[4] = strtok(NULL, ""); // 提取第五部分
char* result = malloc(sizeof(char) * (strlen(parts[0]) + strlen(parts[1]) + strlen(parts[2]) + strlen(parts[3]) + 1)); // 总长度加上结束符'\0'
strcpy(result, parts[0]); // 将所有部分连接起来
strcat(result, parts[1]);
strcat(result, parts[2]);
strcat(result, parts[3]);
strcat(result, parts[4]);
return result;
}
int main() {
char* uuid_str = "123e4567-e89b-12d3-a456-426655440000";
char* extracted_uuid = extract_UUID_from_string(uuid_str);
if (extracted_uuid) {
printf("Extracted UUID: %s\n", extracted_uuid);
free(extracted_uuid); // 释放内存
} else {
printf("Invalid UUID string.\n");
}
return 0;
}
阅读全文