gpt4 book ai didi

c - fscanf() 在不同机器上的行为不同

转载 作者:行者123 更新时间:2023-11-30 15:56:25 25 4
gpt4 key购买 nike

下面的代码行应该读取一个字符串、一个 int 和两个用逗号分隔的 double ,并将它们存储在变量中。

fscanf(f,"%[^,],%d,%Lf,%Lf",name,&id,&east, &north);

它可以在我的 Visual Studio 2010 编译器上运行并读取正确的值。我在另一台机器上运行了该程序,在该机器上我获得了三个数字的随机值,但字符串的值是正确的。

可能是什么?

最佳答案

%Lf 适用于 long double 类型,而不是 double。在 Microsoft 编译器上,long doubledouble 具有相同的大小和表示形式,因此它恰好可以工作,但您的代码仍然通过使用不匹配的格式说明符来调用未定义的行为。将 %lfdouble 一起使用,或者如果要使用 %Lf,请将类型更改为 long double,并且它应该可以在任何地方工作。

关于c - fscanf() 在不同机器上的行为不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11281190/

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