gpt4 book ai didi

c++ - C++ 中的 sscanf 格式化输入

转载 作者:太空狗 更新时间:2023-10-29 21:27:17 25 4
gpt4 key购买 nike

如果输入字符串中没有空格,我有以下代码可以工作。

char* input2 = "(1,2,3)";
sscanf (input2,"(%d,%d,%d)", &r, &n, &p);

以下输入失败:

char input2 = " ( 1 , 2 , 3  ) ";

如何解决这个问题?

最佳答案

简单修复:在模式中添加空格。

char* input2 = "( 1 , 2 , 3 )";
sscanf (input2,"( %d, %d, %d )", &r, &n, &p);

模式中的空格占用了任意数量的空白,所以你没问题。测试程序:

        const char* pat="( %d , %d , %d )";
int a, b, c;

std::cout << sscanf("(1,2,3)", pat, &a, &b, &c) << std::endl;
std::cout << sscanf("( 1 , 2 , 3 )", pat, &a, &b, &c) << std::endl;
std::cout << sscanf("(1, 2 ,3)", pat, &a, &b, &c) << std::endl;
std::cout << sscanf("( 1 , 2 , 3 )", pat, &a, &b, &c) << std::endl;

输出:

3
3
3
3

此行为是因为手册中的以下段落:

A directive is one of the following:

· A sequence of white-space characters (space, tab, newline, etc.;
see isspace(3)). This directive matches any amount of white space,
including none, in the input.

关于c++ - C++ 中的 sscanf 格式化输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9373798/

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