从文件中逐行读取c

时间:2018-07-01 15:12:23

标签: c scanf fopen fgets

我必须打开并读取带有sensorvalues的.dat文件。每行都有一个我必须读取的新值,例如:

timestamp, value
000000001, 1.233
000000002, 1.345
...

我必须编写一个函数,每次我将其称为新的sensorvalue时都返回。 我知道如何读取整个文件,但我不知道如何实现诸如线指针(谁告诉我接下来要读取哪一行)之类的东西。 时间戳记不是很规律,所以我认为我不能用它们来获取最新的值。

希望您能理解我的问题,可以帮助我,谢谢!

1 个答案:

答案 0 :(得分:0)

  1. 如果仅在需要读取行时读取文件,则无需执行任何其他操作。只需编写一个读取行并为您提供所需数据的函数。下次需要获取一些传感器数据时,只需再次调用该函数,FILE的内部将完成其余工作,因为它会记住它在哪里。

    sensor_data read_data(FILE * fp) {
        ...
        fgets(..., ..., fp);
        /* test */
    
        /* parse line */
        return sensor_data;
    }
    
  2. 如果由于其他原因确实需要遍历文件,并且想要获取与下一个对应的行,则可以使用ftell()和{{ 1}},或者(如果您知道需要哪一行),只需fseek()

    fseek(fp, LINE_LENGTH * n, SEEK_SET)