gpt4 book ai didi

c++ - fscanf 的愚蠢错误 - 逗号而不是点

转载 作者:太空宇宙 更新时间:2023-11-04 02:11:27 24 4
gpt4 key购买 nike

我的一个项目的 C++ 源代码中有一个愚蠢的错误。我在这部分源码中做I/O操作。我有一个愚蠢的错误,我打印 fscanf 读取值。在这部分下面:首先,我没有读取好的值,当我打印一个浮点值时,我得到一个带有逗号“,”而不是点“。”的十进制值。在整数部分和 float 部分之间。

FILE* file3;
file3=fopen("test.dat","r");
float test1;
fscanf(file3," %f ",&test1);
printf("here %f\n",test1);
float test3 = 1.2345;
printf("here %f\n",test3);
fclose(file3);

其中 test.dat 文件包含“1.1234”,我开始执行:

here 1,000000
here 1,234500

所以,我做了一个用 g++ 编译的简单测试 C 程序:

#include <stdio.h>
#include <stdlib.h>

int main()
{
FILE* file3;
float test3;
file3=fopen("test.dat","r");
fscanf(file3,"%f",&test3);
printf("here %f\n",test3);
fclose(file3);
}

它给出了:

here 1.123400

这是我第一次遇到这样的错误。任何人都可以看出哪里出了问题?

最佳答案

您的 C++ 语言环境是否以某种方式设置为使用欧洲惯例?他们使用逗号,而我们使用点和点作为千位分隔符。

看看环境变量的设置

朗 LC_CTYPE LC_ALL

尝试设置 en_GB 或 en_US。确定这是一个区域设置问题后,接下来决定什么行为是有意义的。显示 1224,45 是一个错误吗?用户设置语言环境是有原因的。

关于c++ - fscanf 的愚蠢错误 - 逗号而不是点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13489940/

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