【发布时间】:2014-09-08 11:38:44
【问题描述】:
我在读取包含浮点值的 txt 文件时遇到问题。 我看过一些关于读取 txt 文件的教程,到目前为止,所有这些教程都使用 fgetc 或 fgets 来读取文件的内容。我正在寻找一些类似的浮动功能,因为我的文件内容是浮动的。是否有某种方法可以读取包含浮点数的文件,或者我使用这些函数来中断浮点数并将每个函数读取为一个字符,然后打印该值?
【问题讨论】:
我在读取包含浮点值的 txt 文件时遇到问题。 我看过一些关于读取 txt 文件的教程,到目前为止,所有这些教程都使用 fgetc 或 fgets 来读取文件的内容。我正在寻找一些类似的浮动功能,因为我的文件内容是浮动的。是否有某种方法可以读取包含浮点数的文件,或者我使用这些函数来中断浮点数并将每个函数读取为一个字符,然后打印该值?
【问题讨论】:
像这样使用fscanf
fscanf(myfile,"%f",&myfloat);
【讨论】:
如果您只读取一个文本文件,您可以使用 I/O 重定向。
#include <stdio.h>
int main() {
float a;
scanf("%f", &a);
return 0;
}
如果你的可执行文件名是 abc.exe 或简单的 abc, 运行为:
abc < in.txt
【讨论】:
您可以使用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 的字符串格式。
然后您可以添加其他参数,这些参数将是您正在读取的变量的指针。
它将返回成功读取的项目数。
还有其他方法。如果您的输入文件具有非平凡的结构,您可以尝试使用flex 和bison 等工具对其进行解析。 Flex 是一个分词器:它将帮助您从文件中读取项目,将它们拆分(字符串、数字、标识符、特殊符号——以您指定的任何方式)。 Bison 是一个解析器生成器:你描述一个标记的语法,它会为你生成一个解析器。
【讨论】: