在C中读取文件时如何将不同的列放入不同的数组中

How to put different columns into different arrays when reading a file in C

我正在尝试将文件的列放入不同的数组中,文件排列如下:

0004    78  118
0014    79  118
0024    79  119
0034    77  119
0044    76  118
0054    76  117
0064    77  118
0074    75  119
0084    80  121
0094    81  122

所以对于这个文件,我想为每一列获取 3 个数组。每列由一个制表符(或 space 字符,我不知道它在代码中翻译成什么)分隔,并且在该行的末尾有一个结束符。我必须一次读入多个文件,所以我必须将数据放入它们各自的数组中,然后 for 循环再次循环。 这是我的代码:

int BTsensors;
char filename2[50];
for (int i = 0; i < BTsensors; i++)
{
    sprintf(filename2, "BT_%d.txt", i + 1);
    FILE * fpointer;
    fpointer = fopen(filename2, "r");
    if (fpointer != 0)
    {
        //store the data in the arrays here

        fclose(fpointer);
    }
}

我尝试使用一个循环,其中我将数组的数据存储在每行一个数组中,然后创建另外三个数组并将大数组的前四个元素存储在一个较小的数组中,然后跳过包含 space 的元素,并对其他两个数组执行相同的操作。从语法上讲,这太离谱了,虽然我已经研究了几个小时,但我找不到任何其他符合我水平的方法,但我怀疑它可能与字符串操作有关。

非常感谢为此提供的任何帮助。提前谢谢你。

查看 fscanf 函数,它根据给定格式读取值。例如,三个整数的行可以用

读取和转换
int val1[256], val2[256], val3[256];
...
if (fscanf (fpointer, " %d %d %d", &val1[i], &val2[i], &val3[i]) != 3) {
  /* Malformed line. */
} else {
  /* Line had three integers. */
}

如果您需要保留 0094 中的初始零,您可以对字符串使用 %s 格式,以及指向合适大小的字符串的指针。