【问题标题】:Reading lines of a txt file as floats in C将txt文件的行读取为C中的浮点数
【发布时间】:2020-10-28 08:08:52
【问题描述】:

我有一个文本文件,其文本如下:

p 1.002 2.705 3.601
p 4.005 9.001 1.044
...

我想获取浮点值并将它们分配给变量。到目前为止,我已经得到了

FILE *fileStream = fopen("file.txt, "r");
char fileText[100];
float x;
while (fgets(fileText, sizeof fileText, fileStream))
    {
        if (fileText[0] == 'p')
        {
            x = fileText[2];
            printf("%f",x);
        }
    }
    fclose(fileStream);

但它会打印出一些不在线上的浮点数。我是 C 的新手,所以我不确定如何获得花车。非常感谢任何帮助。

【问题讨论】:

  • 为什么不使用fgets,后跟sscanf
  • float x, y, z; 然后在fgets()if (sscanf (fileText, "p %f %f %f", &x, &y, &z) != 3) { /* handle error */ } Otherwize、xyz 现在从该行中保留 3-floats。
  • @kiranBiradar(我想你的意思是 fgets() 后面跟着 sscanf() :)
  • @DavidC.Rankin 是的,谢谢:D
  • @DavidC.Rankin 成功了!非常感谢

标签: c file-io


【解决方案1】:

如果你想从 txt 文件中读取浮点数,也许你应该使用fscanf 函数从文件中读取你想要的每个值。

在我看来,您应该使用以下指令通过您提供的文本文件读取浮点数:

fscanf(fileStream, "p %f", &x);

通过上面的函数,p被读取并忽略,但第一个浮点数被读取并放入变量x,您可以通过printf("%f", x);打印它。

您还可以在Tutorialspoint 中阅读更多相关信息。

其次,您在代码中输入的这条指令会导致编译时错误:

x = fileText[2];

这是因为您无法将几个字符初始化为浮点数。这是没有意义的。要将字符串转换为浮点数,应使用此函数将字符串转换为浮点数:

x = atof(fileText);

通过上面的函数,如果你的程序可以的话,它会将fileText转换成一个浮点数并放入x变量中。

您应该包含stdlib.h 以使用atof()

【讨论】:

    猜你喜欢
    • 2012-01-15
    • 2016-08-19
    • 2018-09-08
    • 1970-01-01
    • 2021-10-19
    • 2019-09-09
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    相关资源
    最近更新 更多