gpt4 book ai didi

c - 如何使用 sscanf 从字符串文字中提取 long unsigned int

转载 作者:太空宇宙 更新时间:2023-11-04 06:21:04 25 4
gpt4 key购买 nike

我尝试将所有这些标志 ld lilusscanf 一起使用,但都没有用。无论我在 buf 中输入什么数字,以下内容都会得到 4294967295:

long unsigned data;
char buf[40] = "data 2349872764943587";

if (sscanf (buf, "data %lu", &data) == 1)
{
printf ("%s\n", buf);
printf ("data:\t%lu\n", data);
}

输出:

data 2349872764943587
data: 4294967295

我是不是使用了错误的转换标志,还是遗漏了什么?

最佳答案

OP 的 unsigned long 似乎是 32 位的,因此不能表示 51 位的 2349872764943587

如果坚持使用缺少 64 位整数的编译器,代码可以使用 double,它通常可以处理 53 位整数值而不会丢失精度。

double data;
char buf[40] = "data 2349872764943587";

if (sscanf (buf, "data %lf", &data) == 1)
{
printf ("%s\n", buf);
printf ("data:\t%.0f\n", data);
}

输出

data:   2349872764943587

关于c - 如何使用 sscanf 从字符串文字中提取 long unsigned int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34901440/

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