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

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


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

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

最佳答案

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

sensor_data read_data(FILE * fp) {
    ...
    fgets(..., ..., fp);
    /* test */

    /* parse line */
    return sensor_data;
}

如果确实由于其他原因需要遍历文件,并且想要获取与下一个对应的行,则可以使用ftell()fseek()保存文件指针的位置,或者(如果知道哪个行),只需fseek(fp, LINE_LENGTH * n, SEEK_SET)

sensor_data read_data(FILE * fp, long n) {
    ...
    fseek(fp, n * LINE_LENGTH, SEEK_SET);
    fgets(..., ..., fp);
    /* test */

    /* parse line */
    return sensor_data;
}

关于c - 从文件中逐行读取c中的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51124518/

10-12 00:41
查看更多