从C中的文本文件中读取大量数字

时间:2014-06-27 16:42:35

标签: c arrays scanf

我试图从文本文件中读取大量的数值数据(双打)。文本文件有10列,每列包含242个数字。列由空格分隔。我试图专门取第一列和第七列并将它们放入一个数组中。目前我正在尝试这个:

int i;
double a;
double b;
double junk;
double array[2][242]

FILE *fp;
fp = fopen("data_table.dat", "w");
for (i = 0; i <= 242; i++);
{
    fscanf(fp, "%f %f %f %f %f %f %f %f %f %f\n", a, junk, junk, junk, junk, junk, b,
    junk, junk, junk);
    array[0][i] = a;
    array[1][i] = b;
}
fclose(fp);

我的想法是打开文本文件,读取一行双打并将第一列和第七列保存到数组中,其余的都是垃圾。但是,当我检查数组之后,数组中的每个条目都是6.943e-310,它甚至不接近我的数据表中的任何数据。

另一件值得注意的事情是,在我运行之后,整个文本文件都是空的。我可以用值再次填充它,但是在我运行代码后它再次为空。此外,每列中的第一个条目是列中数据的字符串(例如,第一列的起始长度为nm)。

2 个答案:

答案 0 :(得分:3)

您使用fp = fopen("data_table.dat", "w");

中的“w”选项打开了要写入的文件

你想打开它而不是用“r”打开它,否则它会截断文件,这就是为什么你之后什么也看不到它。

答案 1 :(得分:3)

  1. (正如@Ranic同时发布的那样)你想从“data_table.dat”读取,但用“w”打开它。该调用将文件截断为0。使用“r”代替。
  2. 您必须将指针(&junk&a&b)传递给fscanf()而不是值