gpt4 book ai didi

c - 如果我们不知道字符串的大小并且无法动态分配内存,有没有办法用 sscanf 标记字符串?

转载 作者:行者123 更新时间:2023-11-30 15:23:01 27 4
gpt4 key购买 nike

如果我们不知道字符串的大小并且无法动态分配内存,是否可以使用 sscanf 来标记字符串?

下面是一个不满足上述要求的示例:

char token[100];///we can't do that in this case since we don't know the size of the string
int offset = 0;
int consumed = 0;

sscanf(format + offset, "%s%n", tokenf, &consumed);
offset += consumed;

注意:我知道 strtokstrtok_rstrtok_s,但我要询问 sscanf或其他方式。

此外,strtok 函数是否为 token 动态分配内存?

最佳答案

如果您使用的是 GNU libc(或最新的 POSIX 版本),您可以使用 m 修饰符来 scanf 让它为您分配内存:

char *token;
int offset = 0;
int consumed = 0;

if (sscanf(format + offset "%ms%n", &token, &consumed) >= 1) {
offset += consumed;
... do something with token ...
free(token);
}

但是,这是一个 GNU 扩展(也是 POSIX-2008 的一部分,因此至少在某种程度上是可移植的),因此可能无法在任何地方工作。另外,请务必检查 sscanf 的返回值...

关于c - 如果我们不知道字符串的大小并且无法动态分配内存,有没有办法用 sscanf 标记字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28930978/

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