【发布时间】:2018-06-15 11:00:16
【问题描述】:
我有一个名为 test.txt 的文件,该文件包含:
<this is a test = 1>
<more tests = 42 and more "34">
<start>10.213123 41.21231 23.15323</start>
<random stuff = "4">
<blah 234>
当我看到<start> 时,我想将后面的 3 个数字扫描成这样的双精度数:
x = 10.213123
y = 41.21231
z = 23.15323
我有点困惑,因为 fgets 扫描整行,我如何将 3 个数字扫描成双精度数?因为数字可以有不同的长度?我这样做是为了打印出它从文件中读取的内容,但我无法理解它。
void print_lines(FILE *stream) {
char line[MAX_LINE_LENGTH];
while (fgets(line, MAX_LINE_LENGTH, stream) != NULL) {
fputs(line, stdout);
}
}
【问题讨论】:
-
这可能会有所帮助:How to read / parse input in C? The FAQ。特别是“阅读,然后解析”部分。您可以在代码中使用 fgets,然后使用 strtod 遍历该行。
-
您可以创建一个函数来检查是否为line starts with
"<start>",如果是则仅解析这一行。 -
是否保证
<start>和</start>会在同一行?如果三个数字在两行或更多行上怎么办?如果您想处理这种情况,您将不得不使用不同的方法。
标签: c file while-loop double filestream