【问题标题】:Using sscanf to read strings with white spaces in C使用 sscanf 读取 C 中带有空格的字符串
【发布时间】:2014-12-12 01:51:59
【问题描述】:

我正在尝试使用 sscanf 扫描文本字符串并将值存储到数组中。在存储最后一个字符串时,它会在遇到空白时停止扫描。例如,在下面的字符串中,它只会存储单词“STRING”。我曾尝试使用 %[^ \t\n] 和其他各种说明符,但似乎我遗漏了一些东西。

我只是无法获得包含空格的功能,我确定它可能很简单。

string test = "9999:STRING OF TEXT";

scan = sscanf(test, "%d:%s", rec[i].ref, rec[i].string);

【问题讨论】:

    标签: c


    【解决方案1】:

    你应该已经发布了一个最小的工作代码。

    但是,问题很可能是 %s 没有像 %f 和 %d 等数字格式那样跳过空格。使用sscanf(test, "%d:%[^\n]", rec[i].ref, rec[i].string); 之类的东西来捕获: 之后的任何内容。

    详情请看这里:[http://www.cplusplus.com/reference/cstdio/sscanf/][1]

    【讨论】:

    • %s 会跳过初始空白。
    【解决方案2】:

    所以这不起作用?

    sscanf(test, "%d:%[^\t\n]", rec[i].ref, rec[i].string);
    

    看看这个答案:reading a string with spaces with sscanf

    基本上这将匹配数字,然后是不在括号中的任何内容(制表符,换行符),注意 ^ 符号。

    【讨论】:

    • 谢谢,我的印象应该是 "%d:%s[^\t\n]" 我知道这对我来说会很愚蠢!
    猜你喜欢
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    • 2020-07-09
    • 1970-01-01
    • 2016-08-14
    相关资源
    最近更新 更多