c++ - sscanf 对于这种类型的字符串

标签 c++ parsing scanf

即使阅读了如何使用 sscanf 执行此操作的文档,我也不太确定。

这是我想做的: 给定一串文本:

读取最多前 64 个字符或直到达到空间 然后会有一个空格,一个=,然后是另一个空格。 之后,我想提取另一个字符串,直到字符串结束或达到 8192 个字符。我还希望它将第二个字符串中出现的任何“\n”更改为实际的换行符。

我有:“%64s = %8192s”,但我认为这是不正确的。

谢谢

例如:

element.name = hello\nworld

将字符串 1 与 element.name 和字符串 2 作为

hello
world

最佳答案

我确实为此推荐 std::regex,但除此之外,你应该可以进行一些错误检查:

#include <cstdio>

int main(int argc, const char *argv[])
{
    char s1[65];
    char s2[8193];
    if (2!=std::scanf("%64s = %8192s", s1, s2))
        puts("oops");
    else
        std::printf("s1 = '%s', s2 = '%s'\n", s1, s2);
    return 0;
}

关于c++ - sscanf 对于这种类型的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8685769/

相关文章:

scanf时与char数组混淆

c - scanf 的工作并检查输入是否为 int

c++ - 让可执行文件在多个 Linux 操作系统的 : 上运行

excel - Excel 工作表的单元格类型显示为数字,实际上是文本类型

javascript - 运行 AJAX 调用的 javascript 代码

python - 如何使用 Python 格式化 pubDate

c++ - 使用 isdigit 从字符串中提取一个 int

c++ - 在 bool 值上使用按位非运算符 (~) 是否会调用未定义的行为?

java - 在通过 ProcessBuilder 运行的 C 程序中捕获信号

c - gets() 和 scanf() 有什么区别