C-scanf仅在特定的字符序列之后才用引号将数字引起来

问题描述 投票:0回答:1

说我有一个像这样的字符串:

Hello World - this is a line of textCOLOR="4"

并且此字符串存储在buf[1000]中>

您可以看到此字符串具有COLOR="n"格式的颜色标签。该数字是需要提取的数字(可以在1到56之间)并分配给int变量。我希望此标记能够位于字符串中的任何位置。

我可以运行以下代码来提取颜色值:

int colorNumber = 1; //default value
if (scanf(buf, "%*[^\"]\"%2d[^\"]\"", &colorNumber)) {
    // work with number
}

并且效果很好,但是如果字符串中包含数字或引号,则scanf将无法生成该数字。

我已经尝试了第二个scanf参数的一些变体,但是没有用。我尝试了"%*[^\"]COLOR=\"%2d[^\"]\"",但似乎根本不起作用。

我已经浏览了scanf的手册页,但是在那儿也找不到我想要的东西。

也许scanf不是正确的工具吗?如果需要,我愿意尝试其他库/功能。

说我有一个像这样的字符串:Hello World-这是一行textCOLOR =“ 4”,并且该字符串存储在buf [1000]中,如您所见,该字符串具有颜色标签,格式为COLOR =“ n“。 ...

c scanf stdio
1个回答
0
投票

尝试

© www.soinside.com 2019 - 2024. All rights reserved.