gpt4 book ai didi

c - 有没有办法使用 strtok() 以这种方式解析?如果不是 strtok() 还有其他方法吗?

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

我希望使用 strtok() 解析以下字符串。

DINNER;NME=Tom Johnson;ADRES=1234 Street;TIME="12:00","15:00":Formal

有没有一种方法可以获取定界符左侧的内容,并将该值存储在其他变量中后,我希望删除该部分。

例子:因此,如果我在上面的字符串中选择分隔符为 ; 。我希望将 DINNER 存储在变量中,然后从我解析的字符串中删除 DINNER。所以字符串现在看起来像这样:

NME=Tom Johnson;ADRES=1234 Street;TIME="12:00","15:00":Formal

无论如何我可以做到这一点吗?如果使用 strtok() 无法实现,是否有其他方法可以实现?

最佳答案

第一次调用 strtok 时,它将返回指向第一个标记的指针。下一次指向下一个标记的指针。例如

char *din = strtok(text, ";"); // "DINNER;NME=T  ...
char *nme = strtok(NULL, ";"); // "NME=Tom John ...

请注意,您必须在第一次调用后传递一个NULL 指针。这并不意味着字符串的第一部分被删除,您只是得到一个指向字符串另一部分的指针。此外,';' 被替换为空终止字符。

如果您绝对想“删除”第一部分,则必须复制要保留的部分。例如

char *keep = strdup(nme);
free(text);

关于c - 有没有办法使用 strtok() 以这种方式解析?如果不是 strtok() 还有其他方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34927259/

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