gpt4 book ai didi

c - 使用 sscanf 从字符串中删除目标字符

转载 作者:太空宇宙 更新时间:2023-11-04 04:27:43 25 4
gpt4 key购买 nike

我最近一直在学习不同的转换说明符,但我很难使用其中一种更复杂的转换说明符。有问题的是括号说明符 (%[set])。

据我了解,根据我所读到的内容,使用 %[set] 消耗和分配与集合(扫描集)中的字符序列匹配的任何字符串,并使用 %[^ set] 有相反的效果;本质上是使用和分配任何不包含扫描集中字符序列的字符串。

这是我的理解,尽管解释得很粗略。我试图将此说明符与 sscanf 一起使用,以使用 sscanf 从字符串中删除指定字符:

 sscanf(str_1, "%[^#]", str_2);

假设 str_1 包含“OH#989”。我的意图是将此字符串存储在 str_2 中,但在此过程中删除散列字符。但是,sscanf 在哈希字符处停止读取,当我打算存储“OH989”时仅存储“OH”。

我是用了错误的方式使用了正确的方法,还是完全使用了错误的方法?如何使用 sscanf 从字符串中正确删除/提取指定字符?我知道这可以通过其他函数和运算符实现,但理想情况下我希望使用 sscanf

最佳答案

扫描集匹配一系列(一个或多个)字符,这些字符与扫描集括号的内容匹配或不匹配。当遇到第一个不在扫描集中的字符时,它会停止。要获得字符串的两个部分,您需要使用类似的东西:

sscanf(str_1, "%[^#]#%[^#]", str_2, str_3);

我们可以协商第二个转换规范;可能 %s 就足够了,或者其他一些扫描集也合适。但这将为您提供“# 之前”和“# 之后”字符串,然后可以将它们连接起来以提供所需的结果字符串。

关于c - 使用 sscanf 从字符串中删除目标字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39884463/

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