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

时间:2015-12-01 19:23:25

标签: c arrays string file rows

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

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个数组。每个列由制表符分隔(或空格字符,我无法分辨它在代码中的转换),并且在行的末尾有一个结束字符。我必须一次读取多个文件,所以我必须将数据放入各自的数组中,然后再循环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);
    }
}

我尝试使用一个循环,我将数据存储在每行一个数组中的数组中,然后制作另外三个数组并将大数组的前四个元素存储在一个较小的数组中,然后跳过元素包含空间,并为其他两个数组做同样的事情。从语法上来说,这是令人发指的,虽然我已经研究了几个小时,但我找不到任何其他方式来做我的水平,但我怀疑它可能与字符串操作有关。

对此的任何帮助深表感谢。提前谢谢。

1 个答案:

答案 0 :(得分:0)

查看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格式作为字符串,以及指向合适大小字符串的指针。