gpt4 book ai didi

c - 用于解析的 Sscanf 定界符?

转载 作者:太空狗 更新时间:2023-10-29 17:06:43 28 4
gpt4 key购买 nike

我正在尝试使用 sscanf 解析以下字符串:

query=testword&diskimg=simple.img

如何使用 sscanf 解析出“testword”和“simple.img”? sscanf 的定界符参数真的让我很困惑:/

谢谢!

最佳答案

如果你知道“testword”的长度总是8个字符,你可以这样做:

char str[] = "query=testword&diskimg=simple.img";
char buf1[100];
char buf2[100];

sscanf(str, "query=%8s&diskimg=%s", buf1, buf2);

buf1 现在将包含“testword”,buf2 将包含“simple.img”。

或者,如果您知道 testword 将始终以 = 开头并后跟 &,并且 simple.img 将始终以 = 开头,您可以使用以下方法:

sscanf(str, "%*[^=]%*c%[^&]%*[^=]%*c%s", buf1, buf2);

它非常神秘,所以这里是摘要:每个 % 指定一段文本的开始。如果 % 后面有一个 *,这意味着我们忽略该 block 并且不将它存储在我们的缓冲区之一中。括号内的 ^ 表示此 block 包含任意数量的不是括号内字符的字符(^ 本身除外)。 %s 读取任意长度的字符串,%c 读取单个字符。

总结一下:

  • 如果字符不是 =,我们将继续阅读并忽略它们。
  • 我们阅读并忽略另一个字符(等号)。
  • 现在我们在 testword,所以我们继续读取字符并将其存储到 buf1 中,直到遇到 & 字符。
  • 要阅读和忽略更多字符;我们继续前进,直到我们再次点击 =。
  • 我们读取并忽略单个字符(同样是等号)。
  • 最后,我们将剩下的内容(“simple.img”)存储到 buf2 中。

关于c - 用于解析的 Sscanf 定界符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13757430/

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