gpt4 book ai didi

c++ - 使用 sscanf 读取字符串

转载 作者:行者123 更新时间:2023-11-28 05:26:48 25 4
gpt4 key购买 nike

我正在尝试使用以下代码读取括号内的第二个数字,但它不起作用,我正在按照这篇文章中的方法 How to use sscanf in loops? .我调试我的代码,问题是它没有进入 while 循环,有人能告诉我如何解决吗?

#include <stdio.h>
#include <string>

int main(void)
{
std::string line = "(1:1.1) (2:18.5) (3:40.0) (4:11.0)";
char const *data = line.c_str();
int offset;
int index;
double value;
double sum = 0;

while (sscanf(data, " (%d:%lf)%n", &index, &value,&offset) == 1)
{
sum += value;
data += offset;
}

printf("sum = %d\n", sum);
}

最佳答案

要打印 double,你应该像扫描一样使用 %lf,而不是检查 sscanf 是否返回 1,你应该检查它何时返回大于 0。

int main(void)
{
std::string line = "(1:1.1) (2:18.5) (3:40.0) (4:11.0)";
char const *data = line.c_str();
int offset;
int index;
double value;
double sum = 0;

while (sscanf(data, " (%d:%lf)%n", &index, &value,&offset) > 0)
{
sum += value;
data += offset;
}

printf("sum = %lf\n", sum);
}

关于c++ - 使用 sscanf 读取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40393729/

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