【发布时间】:2016-08-19 13:12:47
【问题描述】:
我有一个包含未知(每次)行数的 .txt 文件。每行有 4 个浮点数,由空格字符分隔。
我的问题是我不知道如何将每行中的每个浮点数与其他浮点数分开并将其放在矩阵的正确位置。
这是我到目前为止所做的代码(它第一次遍历每一行,以便我知道声明矩阵的行数,但它只返回四个值中的第一个):
#include <stdio.h>
FILE *fr;
main () {
float time, xaxis, yaxis, zaxis;
char line[40];
int n = 0;
fr = fopen ("walk-after-excel.txt", "r");
while (fgets (line, 80, fr) != NULL) {
n++;
}
rewind (fr);
printf ("%u", n);
float values[n][4];
int i;
for (i = 0; i < n; i++) {
values[i][0] = 0;
values[i][1] = 0;
values[i][2] = 0;
values[i][3] = 0;
}
while (fgets (line, 80, fr) != NULL) {
sscanf (line, "%f", &time);
printf ("%f\n", time);
}
for (i = 0; i < n; i++) {
printf ("%f, %f, %f, %f \n", values[i][0], values[i][1], values[i][2],
values[i][3]);
}
printf ("%u", n);
fclose (fr);
}
任何帮助将不胜感激。
【问题讨论】:
-
你需要展示你自己到目前为止所做的事情吗?
-
不多,我只是通读了.txt文件并打印出来。使用互联网上可用的代码。我真的对我需要做的事情感到茫然
-
您可以使用
scanf()将每个浮点数读入不同的变量。使用malloc()和realloc()动态分配数组并根据需要进行扩展。 -
有很多不同的方法来处理这种情况,但我们不能一一介绍或从头开始解释一切。一种可能的方法是使用
realloc动态更改矩阵的大小。另一种方法(如果允许)是更改输入格式,使 txt 文件以矩阵大小开头。 -
如果真的每行只有四个,那么一个基于
float (*ar)[4]或类似的动态数组似乎是合适的。祝你好运。
标签: c file text io floating-point