【问题标题】:reading file with float values读取具有浮点值的文件
【发布时间】:2014-09-08 11:38:44
【问题描述】:

我在读取包含浮点值的 txt 文件时遇到问题。 我看过一些关于读取 txt 文件的教程,到目前为止,所有这些教程都使用 fgetc 或 fgets 来读取文件的内容。我正在寻找一些类似的浮动功能,因为我的文件内容是浮动的。是否有某种方法可以读取包含浮点数的文件,或者我使用这些函数来中断浮点数并将每个函数读取为一个字符,然后打印该值?

【问题讨论】:

    标签: c file


    【解决方案1】:

    使用fgets 读取每一行,然后根据行的格式,您可以使用sscanf()strtod() 来解析值。

    【讨论】:

    • 我将scanf() 更改为sscanf(),这在该行已经在字符串中时更有意义。
    【解决方案2】:

    像这样使用fscanf

    fscanf(myfile,"%f",&myfloat);
    

    【讨论】:

      【解决方案3】:

      如果您只读取一个文本文件,您可以使用 I/O 重定向。

      #include <stdio.h>
      
          int main() {
              float a;
              scanf("%f", &a);
              return 0;
          }
      

      如果你的可执行文件名是 abc.exe 或简单的 abc, 运行为:

      abc < in.txt
      

      【讨论】:

        【解决方案4】:

        您可以使用fscanf,例如:

        #include <stdio.h>
        
        int main() {
            float var;
            FILE *file;
            file = fopen("input","r");
            fscanf(file, "%f", &var);
            printf("the value is %f\n",var);
            fclose(file);
            exit(0);
        }
        

        fscanf 有两个初始参数,一个指向FILE 结构的指针和一个类似于printf 的字符串格式。 然后您可以添加其他参数,这些参数将是您正在读取的变量的指针。 它将返回成功读取的项目数。

        还有其他方法。如果您的输入文件具有非平凡的结构,您可以尝试使用flexbison 等工具对其进行解析。 Flex 是一个分词器:它将帮助您从文件中读取项目,将它们拆分(字符串、数字、标识符、特殊符号——以您指定的任何方式)。 Bison 是一个解析器生成器:你描述一个标记的语法,它会为你生成一个解析器。

        【讨论】:

          猜你喜欢
          • 2021-10-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-12-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多