gpt4 book ai didi

构建以冒号分隔的数据?

转载 作者:太空宇宙 更新时间:2023-11-04 05:53:38 24 4
gpt4 key购买 nike

我的数据是这样的:

protocolAction:dataA:dataB 

然后我需要获取 header (protoclAction) 和 2 个数据字段。

我正在这样做 - 并告诉我它不是线程安全的并且不健康:

//data is global
char incomingData[200] = {0};

char *header = strtok (incomingData,":");
char *dataA=strtok (NULL, ":");
char *dataB=strtok (NULL, ":");

我最好但又简单的选项是什么来提取我的字段而不是此代码?

最佳答案

“不健康”?它只是不是线程安全的,这通常不是问题。如果它一个问题并且您使用的是 POSIX 系统,请改用 strtok_r()。如果您不使用 POSIX,请提供您自己的 strtok_r()

一般来说,这是我自己的 strtok() 实现(某些 DOS 编程需要它):

static int _isinstr(const char c, const char *str)
{
while (*str)
{
if (c == *str) return 1;
++str;
}
return 0;
}

char *strtok(char *str, const char *delim)
{
static char *strtokptr = 0;
char *p;
int t = 0;

if (!str) str = strtokptr;
if (!str) return 0;

p = str;
while (*p)
{
if (_isinstr(*p, delim))
{
if (!t) goto cont;
*p = 0;
strtokptr = p+1;
return str;
}
if (!t)
{
t = 1;
str = p;
}
cont:
++p;
}
if (t && p > str)
{
strtokptr = 0;
return str;
}
return 0;
}

对于 strtok_r(),您只需删除静态 strtokptr 并添加一个参数 char **strtokptr 并添加一个在 strtoktpr 处使用额外的取消引用。

关于构建以冒号分隔的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33057365/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com